B.H. On Mon, Jun 16, 2014 at 5:38 PM, Mordechay Kaganer <mkaga...@gmail.com> wrote:
> B.H. > > Hello, all! > > I'm trying to set up kamailio as a simple load balancer proxy between PSTN > gateway and a cluster of asterisk servers - rather common use case IMHO. > I'm completely new to kamailio. > > I have started with the default kamailio.cfg that comes with Ubuntu > package and added the dispatcher module as described in the docs ( > http://www.kamailio.org/docs/modules/4.0.x/modules/dispatcher.html). > > At the end, i got this up and running, but with one exception: if incoming > call is not answered by the asterisk end (i.e. it is in ringing state), and > then the gateway sends CANCEL request, kamailio is unable to recognize the > transaction and is not forwarding the request to asterisk. The result is: > the call is left "dangling" in the PBX and is not properly hang up. > > When the gateway sends CANCEL to kamailio, i get the following log > messages: > 4(25442) DEBUG: tm [t_lookup.c:769]: t_lookupOriginalT(): DEBUG: > t_lookupOriginalT: searching on hash entry 31287 > 4(25442) DEBUG: tm [t_lookup.c:492]: matching_3261(): DEBUG: RFC3261 > transaction matching failed > 4(25442) DEBUG: tm [t_lookup.c:859]: t_lookupOriginalT(): DEBUG: > t_lookupOriginalT: no CANCEL matching found! > 4(25442) DEBUG: tm [t_lookup.c:861]: t_lookupOriginalT(): DEBUG: > t_lookupOriginalT completed > 4(25442) DEBUG: tm [tm.c:1039]: w_t_lookup_cancel(): lookup_original: > t_lookupOriginalT returned: (nil) > 4(25442) ERROR: *** cfgtrace: c=[/etc/kamailio/kamailio.cfg] l=485 a=25 > n=xdbg > 4(25442) DEBUG: <script>: is_method(CANCEL): t_check_trans()==false > 4(25442) ERROR: *** cfgtrace: c=[/etc/kamailio/kamailio.cfg] l=487 a=2 > n=exit > > The relevant script snippet is standard from the distro package: > # CANCEL processing > if (is_method("CANCEL")) > { > xdbg("is_method(CANCEL): entry"); > if (t_check_trans()) { > xdbg("is_method(CANCEL): t_check_trans()==true"); > route(RELAY); > } else { > xdbg("is_method(CANCEL): t_check_trans()==false"); > } > exit; > } > > How can i fix this? > Finally, i have found the source of the problem: route[DISPATCH] { if(!ds_select_domain("1", "5")) { send_reply("404", "No destination"); exit; } xlog("L_NOTICE", "--- DISPATCH: going to <$ru> via <$du>\n"); # forward(); # exit(); route(RELAY); } By advice from some blog, i have put only forward(); exit(); instead of route(RELAY). This broke the transaction tracking. With route(RELAY) everything works perfectly. > > Thanks! > > -- > משיח NOW! > Moshiach is coming very soon, prepare yourself! > יחי אדוננו מורינו ורבינו מלך המשיח לעולם ועד! > -- משיח NOW! Moshiach is coming very soon, prepare yourself! יחי אדוננו מורינו ורבינו מלך המשיח לעולם ועד!
_______________________________________________ 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