Hello,
I'm trying to limit all subscriber's active call according to setting their
simultaneous use setting defined in database.
But having problem when one subscriber's INVITE message goes to
retransmission. When retranmission occures INVITE messages don't complete
with BYE and subscriber simultaneus use amount will hung.
My example code block is below.
Does anyone advice me for overcome INVITE retransmissions?
Thanks.
modparam("dialog", "db_url",
"mysql://openser:openserrw@localhost/openser")
modparam("dialog", "dlg_flag", 4)
modparam("dialog", "db_mode", 1)
modparam("dialog","profiles_with_value","callquota")
modparam("dialog", "default_timeout", 3600)
modparam("dialog", "dlg_match_mode",0)
modparam("dialog", "detect_spirals", 1)
route[QUOTA] {
if (is_method("INVITE") && $fU == $avp(s:username)) {
avp_db_query("select quota from subscriber where
username='$avp(s:username)'", "$avp(s:quota)");
$var(SIZE) = 0;
get_profile_size("callquota", "$avp(s:username)",
"$var(SIZE)");
xlog("L_INFO", "CALL_OPENSER:Call originated from = $fd\n");
xlog("L_INFO", "Active call amount for $fU is $var(SIZE) ,
quota=$avp(s:quota)\n");
if( $var(SIZE) >= $avp(s:quota) ){
sl_send_reply("403", "Simultaneous calls limit
reached");
xlog("L_INFO", "QUOTA:Limit of $var(SIZE) active calls has
been reached for user=$avp(s:username), quota=$avp(s:quota)\n");
exit;
}
set_dlg_profile("callquota","$avp(s:username)");
get_profile_size("callquota", "$avp(s:username)",
"$var(SIZE)");
}
}
--
*Bayram KARAGÖZ*