<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Mon, Jun 16, 2014 at 5:38 PM, Mordechay Kaganer <span dir="ltr"><<a href="mailto:mkaganer@gmail.com" target="_blank">mkaganer@gmail.com</a>></span> wrote:<br>
</div><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;border-right-width:1px;border-right-color:rgb(204,204,204);border-right-style:solid;padding-left:1ex;padding-right:1ex">
<div dir="ltr">B.H.<div><br></div><div>Hello, all!</div><div><br></div><div>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.</div>

<div><br></div><div>I have started with the default kamailio.cfg that comes with Ubuntu package and added the dispatcher module as described in the docs (<a href="http://www.kamailio.org/docs/modules/4.0.x/modules/dispatcher.html" target="_blank">http://www.kamailio.org/docs/modules/4.0.x/modules/dispatcher.html</a>).</div>

<div><br></div><div>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.</div>

<div><br></div><div>When the gateway sends CANCEL to kamailio, i get the following log messages:</div><div><div> 4(25442) DEBUG: tm [t_lookup.c:769]: t_lookupOriginalT(): DEBUG: t_lookupOriginalT: searching on hash entry 31287</div>

<div> 4(25442) DEBUG: tm [t_lookup.c:492]: matching_3261(): DEBUG: RFC3261 transaction matching failed</div><div> 4(25442) DEBUG: tm [t_lookup.c:859]: t_lookupOriginalT(): DEBUG: t_lookupOriginalT: no CANCEL matching found!</div>

<div> 4(25442) DEBUG: tm [t_lookup.c:861]: t_lookupOriginalT(): DEBUG: t_lookupOriginalT completed</div><div> 4(25442) DEBUG: tm [tm.c:1039]: w_t_lookup_cancel(): lookup_original: t_lookupOriginalT returned: (nil)</div><div>

 4(25442) ERROR: *** cfgtrace: c=[/etc/kamailio/kamailio.cfg] l=485 a=25 n=xdbg</div><div> 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</div>

</div><div><br></div><div>The relevant script snippet is standard from the distro package:</div><div><div>        # CANCEL processing</div><div>        if (is_method("CANCEL"))</div><div>        {</div><div>                xdbg("is_method(CANCEL): entry");</div>

<div>                if (t_check_trans()) {</div><div>                        xdbg("is_method(CANCEL): t_check_trans()==true");</div><div>                        route(RELAY);</div><div>                } else {</div>

<div>                        xdbg("is_method(CANCEL): t_check_trans()==false");</div><div>                }</div><div>                exit;</div><div>        }</div></div><div><br></div><div>How can i fix this?</div>

<div><br></div><div>Thanks!</div><span class=""><font color="#888888"><div><div><br></div></div></font></span></div></blockquote><div><br></div><div>Here is the INVITE packet header (the gateway here is actually another asterisk box):</div>
<div><br></div><div><div>INVITE sip:0773176356@10.XXX.YYY.20:5080 SIP/2.0</div><div>Via: SIP/2.0/UDP 10.XXX.YYY.30:5060;branch=z9hG4bK04af8582</div><div>Max-Forwards: 70<br></div><div>From: "MK" <sip:548594119@10.XXX.YYY.30>;tag=as552bb907<br>
</div><div>To: <sip:0773176356@10.XXX.YYY.20:5080><br></div><div>Contact: <sip:548594119@10.XXX.YYY.30:5060><br></div><div>Call-ID: 56d55a7c1623a0983fb0bf3a57891d05@10.XXX.YYY.30:5060<br></div><div>CSeq: 102 INVITE<br>
</div><div>User-Agent: Asterisk PBX 11.7.0<br></div><div>Date: Mon, 16 Jun 2014 14:22:55 GMT<br></div><div>Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY, INFO, PUBLISH<br></div><div>Supported: replaces, timer<br>
</div><div>Content-Type: application/sdp<br></div><div>Content-Length: 309</div></div><div> </div></div>And here is the CANCEL request:</div><div class="gmail_extra"><br></div><div class="gmail_extra"><div class="gmail_extra">
CANCEL sip:0773176356@10.XXX.YYY.20:5080 SIP/2.0</div><div class="gmail_extra">Via: SIP/2.0/UDP 10.XXX.YYY.30:5060;branch=z9hG4bK04af8582<br></div><div class="gmail_extra">Max-Forwards: 70<br></div><div class="gmail_extra">
From: "MK" <sip:548594119@10.XXX.YYY.30>;tag=as552bb907<br></div><div class="gmail_extra">To: <sip:0773176356@10.XXX.YYY.20:5080><br></div><div class="gmail_extra">Call-ID: 56d55a7c1623a0983fb0bf3a57891d05@10.XXX.YYY.30:5060<br>
</div><div class="gmail_extra">CSeq: 102 CANCEL<br></div><div class="gmail_extra">User-Agent: Asterisk PBX 11.7.0<br></div><div class="gmail_extra">Content-Length: 0<br></div><div class="gmail_extra"><br></div><div class="gmail_extra">
As far as i can see, branch, tag, call-id all match exactly. So why t_check_trans() does not match the transaction? Also, the problem is only with CANCEL, all other packets pass through properly.</div><div><br></div>-- <br>
<div dir="ltr"><div style="direction:rtl"><span style="color:rgb(102,102,102)">משיח NOW!</span><br></div><font color="#666666">Moshiach is coming very soon, prepare yourself!</font><div dir="rtl"><font color="#666666">יחי אדוננו מורינו ורבינו מלך המשיח לעולם ועד!</font></div>
</div>
</div></div>