[OpenSIPS-Users] New Big int dlg_id of dialog table

Anton lav at ptcomm.ru
Thu May 14 13:43:23 CEST 2015


Good time! Sorry - can not in this topic, but it can help?

Sometimes, the subscriber receives a "503", "Simultaneous calls limit 
reached".
I guess it's because of the incorrectness of the dialog.
It helps to restart Opensips...
It is necessary to determine the cause of non-completion of dialog.
I think they need to use for this DB, but how to do it?
And how to identify and remove the cause with the help of the database?
Pplease, help. 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);
         }
}
}


26.12.2014 12:06, John Nash пишет:
> Hello Bogdan,
>
> Probably I did not explain well. I am using OpenSIPS (1.12.0dev-notls 
> (x86_64/linux))
>
> When dialog is created I see the MI command output as ...
>  opensipsctl fifo dlg_list_ctx
> dialog:: *hash=3028:502141575*
>         state:: 4
>         user_flags:: 0
>         timestart:: 1419578844
>         datestart:: 2014-12-26 07:27:24
>         timeout:: 1419582444
>         dateout:: 2014-12-26 08:27:24
>         callid:: a8d3a13820394340b2c6b54867126726
> ---------------- and so on 
> -------------------------------------------------
>
> But in database values are like ..
> *dlg_id (This column is big int) = 13005663113863*
> call_id = a8d3a13820394340b2c6b54867126726
>
> Even all dialog update queries (when i see debug=4) I can see dialog 
> is updated using the key dlg_id = 13005663113863 (Big int value) ...I 
> think it is very very good to use a big int value for unique dialog ID 
> as DB updates will be much faster. But I am unable to find some way to 
> access this dlg_id = 13005663113863 in script (I basically want to 
> update dialogs with some custom values).
>
> Am i using the correct code? May be I am using some "under 
> construction" works?
>
> John
>
>
>
>
>
> On Fri, Dec 26, 2014 at 1:45 PM, Bogdan-Andrei Iancu 
> <bogdan at opensips.org <mailto:bogdan at opensips.org>> wrote:
>
>     It is the same value, but in var is kept ad string representation.
>
>     Regards,
>     Bogdan
>
>
>     Sent from Samsung Mobile
>
>
>     -------- Original message --------
>     From: John Nash
>     Date:26/12/2014 09:59 (GMT+02:00)
>     To: Bogdan-Andrei Iancu
>     Cc: OpenSIPS users mailling list
>     Subject: Re: [OpenSIPS-Users] New Big int dlg_id of dialog table
>
>     this variable holds a string value for dilog DID but in my table
>     there is a field big int which stores some kind of id
>
>     On Fri, Dec 26, 2014 at 1:16 PM, Bogdan-Andrei Iancu
>     <bogdan at opensips.org <mailto:bogdan at opensips.org>> wrote:
>
>         Hi John,
>
>         See the $DLG_did variable from the dialog module:
>         http://www.opensips.org/html/docs/modules/1.11.x/dialog.html#id297237
>
>         Regards,
>
>         Bogdan-Andrei Iancu
>         OpenSIPS Founder and Developer
>         http://www.opensips-solutions.com
>
>         On 26.12.2014 07:10, John Nash wrote:
>>         I was just wondering if there is any way to get dlg_id value
>>         in a script using some psudo variable. like in earlier
>>         versions we had $DLG_did
>>
>>
>>         _______________________________________________
>>         Users mailing list
>>         Users at lists.opensips.org  <mailto:Users at lists.opensips.org>
>>         http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>
>
>
>
>
> _______________________________________________
> 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/20150514/5fe1bd5f/attachment.htm>


More information about the Users mailing list