[SR-Users] CANCEL before INVITE

Alex Balashov abalashov at evaristesys.com
Thu Jun 17 22:43:28 CEST 2010


David,

You can suppress forwarding 100 Trying to the caller with the 0x01 
flag to t_relay().  The problem is that then the caller will never 
receive 100 Trying, as it is a "hop-by-hop" message;  in other words, 
when received from the callee, the proxy will not forward it. 
Instead, the expectation is that every network element in the call 
path originates its own.

A transaction is not established by the receipt of a provisional 
message.  It is created when the INVITE is received.  As a result, it 
is acceptable for Kamailio to forward the CANCEL request as long as it 
has received the INVITE beforehand, even if it never got a proximate 
response.

Why is it a problem for Kamailio to forward the CANCEL?  It will just 
not be responded to, and the transaction will time out eventually.  No 
harm.

On 06/17/2010 04:39 PM, David wrote:

> Hello,
>
> I had a look at RFC 3261, section 9.1. The trouble is that Kamailio is
> answering "100 Trying" to the caller, so the it is ok for the caller to
> send back a CANCEL request. Trouble is Kamailio forwards the request to
> the called user even though the called user never sent a provisional
> response.
>
> Since the Kamailio server never received a provisional request, it is
> therefore incorrect for it to forward the CANCEL request to the called
> user. ( correct me if I am wrong ).
>
> I added this code :
>
> if ( is_method("INVITE") )
> {
> t_newtran();
> }
>
> The problem is gone. Is this the correct solution ?
>
> David
>
>
> On 2010-06-17 15:49, David wrote:
>> Hey,
>>
>> I am using a Cisco WIP310 wifi phone. Seeing as wifi is very battery
>> demanding, the phone goes into a standby mode. When it's in the
>> standby mode, it takes a few seconds to come back on.
>>
>> So I send an INVITE to the phone, statefully using TM, I send out a
>> CANCEL before the phone returns the "180 ringing" message.
>>
>> Somehow the device is answering the CANCEL before the INVITE, so the
>> result is that it responds to the CANCEL with "481 Call
>> Leg/Transaction Does Not Exist.", after that it responds to the INVITE
>> with a "180 Ringing", the phone than rings indefinitely because the
>> CANCEL is not sent out again as the transaction is completed from the
>> 481 SIP message.
>>
>> I had a look at the CANCEL, there is no Route: header or tag on the
>> To, so it looks like it is part of a new dialog ( I believe that's
>> what rfc3261 says.
>>
>> As far as I can tell, my Kamailio is working properly. It is
>> retransmitting the messages at the proper intervals, and it is passing
>> along the messages as it receives them.
>>
>> The trouble is that the device answers the initial CANCEL before it
>> answers any of the retransmitted INVITEs.
>>
>> Is there something that I can do in Kamailio to resolve this issue ?
>> Is there an option that I can set that will cause Kamailio to relay
>> the CANCEL only to devices that have already returned a 100 Trying or
>> 180 Trying ?
>>
>> What information do you need to know about my config? What parts of
>> the SIP trace do you need ?
>>
>> Thanks,
>>
>> David
>>
>> _______________________________________________
>> SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list
>> sr-users at lists.sip-router.org
>> http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
>
>
> _______________________________________________
> SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list
> sr-users at lists.sip-router.org
> http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users


-- 
Alex Balashov - Principal
Evariste Systems LLC
1170 Peachtree Street
12th Floor, Suite 1200
Atlanta, GA 30309
Tel: +1-678-954-0670
Fax: +1-404-961-1892
Web: http://www.evaristesys.com/



More information about the sr-users mailing list