[SR-Users] Problem with CANCEL handling
Mordechay Kaganer
mkaganer at gmail.com
Mon Jun 16 20:37:40 CEST 2014
On Mon, Jun 16, 2014 at 5:38 PM, Mordechay Kaganer <mkaganer at 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?
>
> Thanks!
>
>
Here is the INVITE packet header (the gateway here is actually another
asterisk box):
INVITE sip:0773176356 at 10.XXX.YYY.20:5080 SIP/2.0
Via: SIP/2.0/UDP 10.XXX.YYY.30:5060;branch=z9hG4bK04af8582
Max-Forwards: 70
From: "MK" <sip:548594119 at 10.XXX.YYY.30>;tag=as552bb907
To: <sip:0773176356 at 10.XXX.YYY.20:5080>
Contact: <sip:548594119 at 10.XXX.YYY.30:5060>
Call-ID: 56d55a7c1623a0983fb0bf3a57891d05 at 10.XXX.YYY.30:5060
CSeq: 102 INVITE
User-Agent: Asterisk PBX 11.7.0
Date: Mon, 16 Jun 2014 14:22:55 GMT
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY, INFO,
PUBLISH
Supported: replaces, timer
Content-Type: application/sdp
Content-Length: 309
And here is the CANCEL request:
CANCEL sip:0773176356 at 10.XXX.YYY.20:5080 SIP/2.0
Via: SIP/2.0/UDP 10.XXX.YYY.30:5060;branch=z9hG4bK04af8582
Max-Forwards: 70
From: "MK" <sip:548594119 at 10.XXX.YYY.30>;tag=as552bb907
To: <sip:0773176356 at 10.XXX.YYY.20:5080>
Call-ID: 56d55a7c1623a0983fb0bf3a57891d05 at 10.XXX.YYY.30:5060
CSeq: 102 CANCEL
User-Agent: Asterisk PBX 11.7.0
Content-Length: 0
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.
--
משיח NOW!
Moshiach is coming very soon, prepare yourself!
יחי אדוננו מורינו ורבינו מלך המשיח לעולם ועד!
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.sip-router.org/pipermail/sr-users/attachments/20140616/7d5f6fa7/attachment.html>
More information about the sr-users
mailing list