[OpenSIPS-Users] Dialog does not end

Bogdan-Andrei Iancu bogdan at opensips.org
Fri May 15 15:22:30 CEST 2015


Hi Anton,

Try to use dlg_list MI command and see the ongoing calls. It looks like 
some calls, from opensips perspective, do not close - you need to run a 
sip tracing and correlated with the dialogs in memory, to learn why some 
do not close: missing BYE ? malformed BYE ? BYE with no did ?

Regards,

Bogdan-Andrei Iancu
OpenSIPS Founder and Developer
http://www.opensips-solutions.com

On 14.05.2015 11:12, Anton wrote:
> Good time!
>
> Sometimes, the subscriber receives a "503", "Simultaneous calls limit 
> reached".
> I guess it's because of the incorrectness of the dialogue.
> It helps to restart Opensips
> It is necessary to determine the cause of non-completion of dialogue.
> I think they need to use for this database, but how to do it?
> And how to identify and remove the cause with the help of the database?
> Thanks!
>
>
> part of the CFG below:
>
> #### Dialog Module
> loadmodule "dialog.so"
> modparam("dialog", "db_url", 
> "mysql://opensips:opensipsrw@localhost/opensips")
> modparam("dialog", "table_name", "dialog")
> modparam("dialog", "db_mode", 1)
> modparam("dialog", "db_update_period", 60)
> modparam("dialog", "profiles_with_value", "gwquota;subscriberquota")
>
> modparam("auth_db", "load_credentials", 
> "$avp(subscriber_username)=username")
>
> route[subscriberquota] {
>
>     avp_db_query("select quota from subscriber where 
> username='$var(subscriber)'","$avp(subscriberquota)");
>     if ($avp(subscriberquota) == 0) {
>         xlog("Subscriberquota route, NO LIMIT FOR USER 
> <$var(subscriber)>");
>         return;
>     }
>     $var(size) = 0;
>     get_profile_size("subscriberquota", "$var(subscriber)", "$var(size)");
>     if( $var(size) >= $avp(subscriberquota) ){
>         sl_send_reply("503", "Simultaneous calls limit reached");
>         xlog("Subscriberquota route, Limit of $var(size) active calls 
> has been reached for subscriber $var(subscriber)");
>         exit;
>     }
>     set_dlg_profile("subscriberquota","$var(subscriber)");
>     get_profile_size("subscriberquota", "$var(subscriber)", "$var(size)");
>     xlog("Subscriberquota route, there are now $var(size) active calls 
> for subscriber $var(subscriber)");
>     return;
>
> }
>
> route[gwquota] {
>
>     #avp_db_query("select quota from quota where 
> username='$avp(gw_id)'","$avp(gwquota)");
>     if ($avp(gw_attrs) == 0) {
>         xlog("GWquota route, NO LIMIT FOR GW $avp(gw_id)");
>         return;
>     }
>     $avp(gwquota) = $avp(gw_attrs);
>     $var(size) = 0;
>     get_profile_size("gwquota", "$avp(gw_id)", "$var(size)");
>     if( $var(size) >= $avp(gwquota) ){
>         sl_send_reply("503", "Simultaneous calls limit reached");
>         xlog("GWquota route, Limit of $var(size) active calls has been 
> reached for GW $avp(gw_id)");
>         exit;
>     }
>     set_dlg_profile("gwquota","$avp(gw_id)");
>     get_profile_size("gwquota", "$avp(gw_id)", "$var(size)");
>     xlog("GWquota route, there are now $var(size) active calls for GW 
> $avp(gw_id)");
>     return;
>
> }
>
> route[dialog] {
>
> if (has_totag()) {
> # sequential requests within a dialog should
> # take the path determined by record-routing
> if (loose_route()) {
>
> if (method=="BYE" || method=="CANCEL") {
> setflag(ACC_DO); # do accounting ...
> setflag(ACC_FAILED); # ... even if the transaction fails
> } else if (is_method("INVITE")) {
>                 # even if in most of the cases is useless, do RR for
>                 # re-INVITEs alos, as some buggy clients do change 
> route set
>                 # during the dialog.
>                 record_route();
>             }
> # route it out to whatever destination was set by loose_route()
> # in $du (destination URI).
> route(relay);
> } else {
> if ( is_method("ACK") ) {
> if ( t_check_trans() ) {
> t_relay();
> exit;
> } else {
> # ACK without matching transaction ->
> # ignore and discard
> exit;
> }
> }
> sl_send_reply("404","Not here");
> }
> exit;
> }
>
> }
>
> route[invite] {
>
> # account only INVITEs
> if (is_method("INVITE")) {
>         create_dialog("B");
> xlog("L_INFO", "New invite recived\n");
> perl_exec("test");
> xlog("L_INFO", "Execution perl function result is $retcode\n");
>         if (is_from_gw("0","i","$avp(gw_attrs)")) {
>             route(gwquota);
>             route(terminate);
>         } else {
>             route(auth);
>             $DLG_timeout=60;
>             $var(subscriber) = $avp(subscriber_username);
>             route(subscriberquota);
>             route(originate);
>         }
>
> }
>
> }
>
>
>
> _______________________________________________
> Users mailing list
> Users at lists.opensips.org
> http://lists.opensips.org/cgi-bin/mailman/listinfo/users

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.opensips.org/pipermail/users/attachments/20150515/1fb70043/attachment.htm>


More information about the Users mailing list