[Serusers] Max-Forwards missing in SER CANCEL during forking

Jiri Kuthan jiri at iptel.org
Fri Jan 15 08:14:09 CET 2010


Andres wrote:
> Jiri Kuthan wrote:
> 
>>
>> Try to set parameter tm/reparse_invite to 1 -- I was not aware of the 
>> option
>> but the code seems to adopt more message pieces including MF than if 
>> the parameter
>> is set to 0.
> 
> I could not find that parameter in the code for 0.9.6 or 0.9.7.  Where 
> did you see it?


My bad, I forgot the version number. Unfortunately 0.9.6 doesn't have it.
It would be probably helpful anyhow to use some release that's not as
old as four years; otherwise you are left with backporting or otherwise
fixing. I'm not aware of an easier fix (like by the way of scripting).

> 
>>
>> BTW was this an esthetic thing or did actually the CANCEL result in a 
>> loop?
>> I could have imagined that the downstream hop absorbs the CANCEL at 
>> transaction
>> level and the CANCEL follows the INVITE path, therefore not looping 
>> unless INVITE
>> did too.
> 
> It resulted in established calls being dropped.  Here is why:
> 1)  In a parallel fork scenario one endpoint answered the call and the 
> others receive the SER CANCEL
> 2)  One of the endpoints rejects the SER CANCEL with a "SIP/2.0 400 Bad 
> Request" (because of the missing mandatory Max-Forwards header)
> 3)  40 seconds later that endpoint sends a "SIP/2.0 480 Temporarily 
> Unavailable" to SER
> 4)  SER Forwards that message to our gateway which cuts off the already 
> established call.


OK interesting :-) The UAS apparently should not send two different
negative answer (not speaking of the very basic commandment to be liberal
receiver) , and UAC should not respond to UAS's negative answer
by terminating an established dialog with another UAS with a different
to-tag.

> 
> Any other suggestions?  We have been running the 0.9.6 version for many 
> years and its solid as a rock.  We do not want to explore the possibilty 
> of upgrading at this point.

Glad 0.9.6 is working for you so well.
Unfortunately I have no better idea than backporting the code in question.
Not sure if you are in position to change the UAC and UAS, apparently there
is a great improvement in their space as well.

-jiri

> 
> Thanks,
> Andres
> http://www.telesip.net
> 
>>
>> -jiri
>>
>> Andres wrote:
>>
>>> Hi,
>>>
>>> We encountered an issue in 0.9.6 when SER forks requests because 
>>> there are several endpoints registered with the same account (ie 
>>> office and home phones).  When one of the endpoints answers the call, 
>>> SER sends a CANCEL to the other endpoints so they can stop further 
>>> call processing.  It turns our that this SER generated CANCEL does 
>>> not contain the "Max-Forwards" header which apparently violates RFC3261.
>>>
>>> Here is an example:
>>> U SER IP:5060 -> 10.10.1.50:36679
>>>  CANCEL 
>>> sip:3055551234 at 10.10.1.50:36679;rinstance=C926AD943D258534F5F62913216C50ADC9D895D2; 
>>>
>>>  transport=udp SIP/2.0..Via: SIP/2.0/UDP 
>>> 10.10.1.21:5065;branch=z9hG4bK1c1e.32eeb702.1..
>>>  From: "9545551234" <sip:9545551234 at 10.10.1.20:5066>;tag=as7d1243c9..
>>>  Call-ID: 4385c66230a310e714f020926aa2028c at 10.10.1.20..
>>>  To: <sip:3055551234 at X.X.X.X:5065>..CSeq: 102 CANCEL..
>>>  User-Agent: Sip EXpress router(0.9.6 (i386/linux))..
>>>  Content-Length: 0....    Is there any fix or workaround for this?  
>>> How can we get that "Max-Forwards" header in the Message if it is 
>>> internally generated by SER and no something that flows through the 
>>> config script.
>>>
>>> Thanks,
>>> Andres
>>> http://www.telesip.net
>>> _______________________________________________
>>> Serusers mailing list
>>> Serusers at lists.iptel.org
>>> http://lists.iptel.org/mailman/listinfo/serusers
>>>
>>
> 
> _______________________________________________
> Serusers mailing list
> Serusers at lists.iptel.org
> http://lists.iptel.org/mailman/listinfo/serusers
> 



More information about the sr-users mailing list