Alex Balashov wrote:
Greetings,
I've run into an issue with 1.4.4 in which the following appears to be happening, and I'm yet to determine the cause:
The total amount of open inbound calls (dialogs) is tracked with the dialog module by putting them in a global profile. Because of a segfault bug with profiles with "no values," a workaround is used wherein a profile "with" values is created and the hash key is always the same value (i.e. "1"). The dialog tracking flag is 2:
modparam("dialog", "dlg_flag", 2)
And profile looks like this:
modparam("dialog", "profiles_with_value", "globalinbound;specificinbound")
Anyway, inbound INVITEs get handed off to a route (route[1]) that performs some logic like this:
route[1] { # Check if DID is assigned to an account with database # and store value in AVP, along with other values.
if($avp(S:did_assigned) == "0") { sl_send_reply("404", "Not Found"); exit; } get_profile_size("specificinbound", "$avp(S:account_id)",
"$var(a_concurrent_calls)");
if($var(a_concurrent_calls) >= $avp(S:port_limit)) { sl_send_reply("486", "Busy"); exit; } setflag(2); # Track dialog. set_dlg_profile("globalinbound", "1"); set_dlg_profile("specificinbound", "$avp(S:account_id)");
For completeness, I should add here:
# Perform dispatcher election - ds_select_domain().
t_on_reply("1"); t_on_failure("1");
if(!t_relay()) sl_reply_error();
exit;
}