On 2012-01-31 at 14:15, Øyvind Kolbu wrote: > On 2012-01-31 at 14:06, Timo Reimann wrote: > > I'm currently in the process of investigating a dialog-related issue > > together with Uri (see CC). It may be related to your problem, so let's > > see if I can find something out that helps you as well. If not, I/we > > should take a dedicated look at your case. > > > > Unfortunately, I'm currently short on time so I cannot give any > > guarantees as to when I'll find the time to get to these dialog-related > > things. I promise to get back to you folks ASAP though, so please hang > > on. > > Great! We are currently running with full debugging enabled, so don't > hesitate to contact if you need some data.
Hi, we've found that perhaps the cause of our problems are multiple identical INVITEs at more or less the exact same time, +/- a few ms. This causes a race within either the tm or dialog module, as it doesn't seem to cope well with duplicates ~simultanously. Our fix is that we use the lock and unlock commands from the cfgutils module together with a hashtable to check for duplicates, and if so, drop them. So our patch is more or less: modparam("htable", "htable", "cidhist=>size=8;autoexpire=10"); modparam("cfgutils", "lock_set_size", 8) $avp(s:f_uid) is the username for our authenticated user and is set in route(AUTH), then in main route, after route(AUTH): if (is_method("INVITE")) { if($(rU{s.len}) == 0) { xlog("L_INFO", "$avp(s:f_uid) tried to call an empty number, dropping call\n"); sl_send_reply("404", "User Not Found"); exit; } lock($ci); if($sht(cidhist=>$ci) != $null) { xlog("L_INFO", "DLG: We've already seen this call-id before, we should drop this invite $ci\n"); unlock($ci); exit; } else { xlog("L_INFO", "DLG: This is a new invite, let's start a dialog! $ci\n"); $sht(cidhist=>$ci) = 1; setflag(3); dlg_manage(); if ($avp(s:f_uid) != $null) { set_dlg_profile("busy","$avp(s:f_uid)"); get_profile_size("busy", "$avp(s:f_uid)", "$var(dlg_busy)"); xlog("L_INFO", "BUSY: f_uid: $avp(s:f_uid), dlg_busy: $var(dlg_busy)\n"); } } unlock($ci); } Worth mentioning is that we also get REGISTER messages stuck in the dialog-module, in state 1, but we only do setflag(3) and dlg_manage() for INVITE. Againt probably caused by identical REGISTER messages. Any idea of why? -- Øyvind Kolbu
pgpswfl1Zwobz.pgp
Description: PGP signature
_______________________________________________ SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list sr-users@lists.sip-router.org http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users