I'm using a dialog module in a small kamailio script that
only does routing based on prefix, and relay the invite from
one ipaddr to another ip addr (diferent interfaces) using $fs
variavel.
Now i was introducing the dialog module to limit the
number of concurrent calls, and i noticed that it only can
increasing the number of dialogs, and it isn't decreasing
when receives the "BYE", I also noticed that when kamailio
receives "BYE" the dialog event route for state "end" is
not executed.
To count the number of concurrent calls I'm using the
following logic in main route:
if (is_method("INVITE")) {
setflag(FLT_ACC); # do accounting
dlg_manage();
if(get_profile_size("concurrentcalls","local","$avp(s:size)"))
{
if($avp(s:size) != $null)
{
xlog("L_INFO",
"Number of calls for this server : $avp(s:size) -
ID=$ci\n");
if($avp(s:size)
>= 15000)
{
xlog("L_INFO", "Concurrent_max calls exceeded $avp(s:size)
for caller '$fU' - R=$ru ID=$ci\n");
sl_send_reply("503", "Channel limit exceeded\n");
exit;
}
}
}
set_dlg_profile("concurrentcalls","local");
}
Please check out the attachment with logs.