[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