[SR-Users] Dialog module not decrementing profile size
Daniel-Constantin Mierla
miconda at gmail.com
Tue Nov 20 14:15:33 CET 2012
Hello,
On 11/20/12 10:02 AM, Grant Bagdasarian wrote:
>
> Hello Daniel,
>
> I've enabled the cfgtrace. Now all I have to do is wait till it
> happens again, as the problem does not occur often.
>
> For now I'm getting the following:
>
> 2012-11-20T09:56:15+01:00 kamailio /usr/local/sbin/kamailio[16350]:
> ERROR: *** cfgtrace: c=[/etc/kamailio/kamailio.cfg] l=302 a=25
> n=dlg_manage
>
> Debug is currently set to 2: debug=2
>
> Should I set this to 4?
>
no, 2 is fine, but be sure you also have an xlog message to print at
least the method type, call-id, from tag and to tag. That will allow to
see for which request the cfg trace is related.
Just to be sure I haven't misunderstood, the dialog is no longer in the
list of active dialogs, but it is still in the profile.
Cheers,
Daniel
>
> Grant
>
> *From:*Daniel-Constantin Mierla [mailto:miconda at gmail.com]
> *Sent:* maandag 19 november 2012 9:59
> *To:* Grant Bagdasarian
> *Cc:* SIP Router - Kamailio (OpenSER) and SIP Express Router (SER) -
> Users Mailing List
> *Subject:* Re: [SR-Users] Dialog module not decrementing profile size
>
> Hello,
>
> On 11/16/12 8:54 AM, Grant Bagdasarian wrote:
>
> Hello Daniel,
>
> Yes, dlg_manage() is being called in the BYE, yet it sometimes
> still occurs that dialogs aren't being cleared.
>
> It is critical for us the dialogs are being cleared as we have an
> application which heavily relies on this.
>
> Do you get any error messages in syslog?
>
> Can you add an xlog(...) message (or load the debugger module and
> enable cfgtrace parameter), then look at the log messages to be sure
> dlg_manage() is executed for BYE requests?
>
> Cheers,
> Daniel
>
> Kind regards,
>
> Grant Bagdasarian
>
> *From:*Daniel-Constantin Mierla [mailto:miconda at gmail.com]
> *Sent:* donderdag 8 november 2012 8:03
> *To:* SIP Router - Kamailio (OpenSER) and SIP Express Router (SER) -
> Users Mailing List
> *Cc:* Grant Bagdasarian
> *Subject:* Re: [SR-Users] Dialog module not decrementing profile size
>
> Hello,
>
> On 10/30/12 10:51 AM, Grant Bagdasarian wrote:
>
> Hello Community,
>
> I've recently started to use the Dialog module to manage the
> amount of incoming calls from our SIP provider allowed to pass
> through by using profiles_with_values and setting the size of
> these profiles to a certain amount.
>
> Most of the time this works as it should, but sometimes the
> 'slots' available for a profile aren't cleared even though a
> dialog has finished. This seems to happen when an high amount of
> regular traffic is hitting kamailio.
>
> Has anyone else experienced this? Are there perhaps any other ways
> to control the slots available for certain incoming SIP traffic?
>
> Below parts of my configuration file. Perhaps I'm doing something
> wrong which causes this to happen.
>
> In my route[WITHINDLG] -> loose_route -> is_method("BYE") I'm not
> calling dlg_manage(), could this be the problem?
>
> is the dlg_manage() executed or not for BYE? You say no above, but the
> example has it. Because you have dlg_match_mode=2, you must call
> dlg_manage() for BYE explicitly.
>
> Cheers,
> Daniel
>
>
> Other comments are welcome too, as I'm fairly new to Kamailio.
>
> modparam("dialog", "enable_stats", 1)
>
> modparam("dialog", "dlg_flag", 4)
>
> modparam("dialog", "hash_size", 4096)
>
> modparam("dialog", "profiles_with_value", "318005004");
>
> modparam("dialog", "default_timeout", 43200)
>
> modparam("dialog", "dlg_match_mode",2)
>
> modparam("dialog", "detect_spirals", 1)
>
> request_route {
>
> # per request initial checks
>
> route(REQINIT);
>
> # handle requests within SIP dialogs
>
> route(WITHINDLG);
>
> ### only initial requests (no To tag)
>
> # CANCEL processing
>
> if (is_method("CANCEL"))
>
> {
>
> if (t_check_trans())
>
> t_relay();
>
> exit;
>
> }
>
> t_check_trans();
>
> # record routing for dialog forming requests (in case they are
> routed)
>
> # - remove preloaded route headers
>
> remove_hf("Route");
>
> if (is_method("INVITE")) {
>
> xlog("L_INFO", "Incoming request for $rU from $fU");
>
> if ($rU == "318005004") {
>
> route(DIALOG);
>
> }
>
> }
>
> # handle registrations
>
> route(REGISTRAR);
>
> if ($rU==$null)
>
> {
>
> # request with no Username in RURI
>
> sl_send_reply("484","Address Incomplete");
>
> exit;
>
> }
>
> # dispatch destinations
>
> route(DISPATCH);
>
> route(RELAY);
>
> }
>
> route[DIALOG] {
>
> dlg_manage();
>
> record_route();
>
> $var(SIZE) = 0;
>
> sql_query("vf", "exec dbo.SelectAvailableSlots '00$rU'", "ra");
>
> $avp(s:limit) = $dbr(ra=>[0,7]);
>
> xlog("L_INFO", "Maximum simultaneous calls is configured at
> $avp(s:limit) ....");
>
> sql_result_free("ra");
>
> if ($rU == "318005004") {
>
> get_profile_size("318005004", "$rU", "$var(SIZE)");
>
> }
>
> xlog("L_INFO", "There are currently $var(SIZE) calls for $rU,
> excluding the current call");
>
> if($var(SIZE) >= $avp(s:limit)) {
>
> xlog("L_INFO", "Simultaneous calls limit of
> $avp(s:limit) reached for $rU: $var(SIZE)\n");
>
> sl_send_reply("603", "Simultaneous calls limit reached");
>
> exit;
>
> }
>
> if ($rU == "318005004") {
>
> set_dlg_profile("318005004", "$rU");
>
> }
>
> if ($rU == "318005004") {
>
> if(get_profile_size("318005004", "$var(SIZE)")) {
>
> xlog("L_INFO", "There are currently $var(SIZE)
> calls for $rU, including the current call");
>
> }
>
> }
>
> }
>
> route[WITHINDLG] {
>
> if (has_totag()) {
>
> # sequential request withing a dialog should
>
> # take the path determined by record-routing
>
> if (loose_route()) {
>
> #Used for call transfer
>
> if($fU == "318005004") {
>
> if (is_method("UPDATE")) {
>
> sl_send_reply("405","Method not allowed");
>
> xlog("L_INFO", "Dropping UPDATE
> message...\n");
>
> exit;
>
> }
>
> if (is_method("INVITE")) {
>
> record_route();
>
> }
>
> if (is_method("BYE")) {
>
> dlg_manage();
>
> }
>
> }
>
> if (is_method("BYE")) {
>
> setflag(1); # do accounting ...
>
> setflag(3); # ... even if the
> transaction fails
>
> }
>
> route(RELAY);
>
> } else {
>
> if (is_method("SUBSCRIBE") && uri == myself) {
>
> # in-dialog subscribe requests
>
> route(PRESENCE);
>
> exit;
>
> }
>
> if ( is_method("ACK") ) {
>
> if ( t_check_trans() ) {
>
> # non loose-route, but
> stateful ACK;
>
> # must be ACK after a 487 or
> e.g. 404 from upstream server
>
> t_relay();
>
> exit;
>
> } else {
>
> # ACK without matching
> transaction ... ignore and discard.
>
> exit;
>
> }
>
> }
>
> sl_send_reply("404","Not here");
>
> }
>
> exit;
>
> }
>
> }
>
> Regards,
>
> Grant
>
>
>
>
>
> _______________________________________________
> SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list
> sr-users at lists.sip-router.org <mailto:sr-users at lists.sip-router.org>
> http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
>
>
>
>
> --
> Daniel-Constantin Mierla -http://www.asipto.com
> http://twitter.com/#!/miconda <http://twitter.com/#%21/miconda> -http://www.linkedin.com/in/miconda
> Kamailio Advanced Training, Berlin, Nov 5-8, 2012 -http://asipto.com/u/kat
> Kamailio Advanced Training, Miami, USA, Nov 12-14, 2012 -http://asipto.com/u/katu
>
>
>
> --
> Daniel-Constantin Mierla -http://www.asipto.com
> http://twitter.com/#!/miconda <http://twitter.com/#%21/miconda> -http://www.linkedin.com/in/miconda
--
Daniel-Constantin Mierla - http://www.asipto.com
http://twitter.com/#!/miconda - http://www.linkedin.com/in/miconda
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.sip-router.org/pipermail/sr-users/attachments/20121120/b7c3a9ec/attachment-0001.htm>
More information about the sr-users
mailing list