[Devel] ERROR:forward_request: unable to compute branch

Andrew Newton andy.newton at sunrocket.com
Mon Mar 5 23:19:53 CET 2007


Bogdan,

Unfortunately, there are a lot of UAs in the field that do the wrong  
thing here.  Going by the IETF principle of "be liberal in what you  
accept, be conservative in what you send", allowing for UAs that are  
not up to date when the effort to do so is not tremendous is a sign  
of practical software.  If Gaurav can provide a reasonable patch to  
fix this problem, will that be acceptable?

-andy

On Mar 5, 2007, at 4:57 PM, Bogdan-Andrei Iancu wrote:

> Gaurav,
>
> RFC 3261 obsoletes (almost 5 years ago) RFC 2543 and my personal  
> opinion is that 3261 should be followed. Of course, at some point I  
> agree that old compatibility should be kept, but not encourage -  
> all devices  (phones, proxies, gateways, etc) should be aligned (by  
> now) to 3261 mostly because of performance, flexibility and  
> strength reasons.
>
> regarding the email thread, the info is posted in the BUG 1510109
>    https://sourceforge.net/tracker/index.php? 
> func=detail&aid=1510109&group_id=139143&atid=743020
> Shortly, it refers to
>    https://lists.cs.columbia.edu/pipermail/sip-implementors/2006- 
> January/011864.html
>
> regards,
> bogdan
>
> Gaurav Kulshreshtha wrote:
>> Bogdan,
>>   I looked at RFC 2543 and RFC 3261. While 3261 mandates branch
>> parameter for both UA and proxy, RFC 2543 only mandates it for  
>> proxies.
>> The UA I am using seems to be RFC 2543 compliant.
>> Also, we have been using the same UA for ser-0.8.14 and it didn't  
>> really
>> have an issue with branch parameter. We ran the same REGISTER test  
>> against
>> OpenSER 1.1.x and that didn't seem to have a problem either. On close
>> inspection, things have been shuffled around a bit in  
>> forward_request()
>> breaking the backward compatibility with RFC 2543 compliant UA.
>>
>> Also, your comment in forward_request( ) states - "According to the
>> latest discussions on the topic, you should reuse the latest stateful
>> branch". Can you forward me to this email thread. I would want to see
>> what this discussion says about backward compatibility.
>>
>> Thanks
>> Gaurav
>> Bogdan-Andrei Iancu wrote:
>>
>>> Hi,
>>>
>>> the request is bogus as the VIA hdr has no branch param which is
>>> mandatory. In stateless routing, the branch param for the next  
>>> VIA is
>>> build based on the previous VIA, so this trigger the error you got.
>>>
>>> regards,
>>> bogdan
>>>
>>> Gaurav Kulshreshtha wrote:
>>>
>>>> Here is the packet coming into OpenSER that causes the problem:
>>>>
>>>> REGISTER sip:abc.com SIP/2.0
>>>> Call-ID: 526bba62d-8d1df06-6d474-ac101d48 at abc.com
>>>> From: Lab1<sip:7034850210 at abc.com>;tag=41784-1602
>>>> To: Lab1<sip:7034850210 at abc.com>
>>>> CSeq: 13707 REGISTER
>>>> Via: SIP/2.0/UDP 172.16.9.132:5060
>>>> Contact: sip:7034850210 at 172.16.9.132:5060
>>>> Max-Forwards: 70
>>>> Expires: 53
>>>> Supported: timer,replaces
>>>> Allow: REFER, UPDATE, INFO, OPTIONS, ACK, INVITE, BYE, CANCEL,  
>>>> NOTIFY
>>>> Content-Length: 0
>>>>
>>>> Thanks
>>>> Gaurav
>>>>
>>>>
>>>> Bogdan-Andrei Iancu wrote:
>>>>
>>>>> I see....could you post the received request? the error appears  
>>>>> only
>>>>> if the request has no VIA at all or there was a parsing error....
>>>>>
>>>>> regards,
>>>>> bogdan
>>>>>
>>>>> Gaurav Kulshreshtha wrote:
>>>>>
>>>>>> We are making use of forward and the proxy mode is stateless.
>>>>>> Gaurav
>>>>>> Bogdan-Andrei Iancu wrote:
>>>>>>
>>>>>>> Hi,
>>>>>>>
>>>>>>> are you using t_relay or forward()   / stateful or stateless ?
>>>>>>>
>>>>>>> regards,
>>>>>>> bogdan
>>>>>>>
>>>>>>> Gaurav Kulshreshtha wrote:
>>>>>>>
>>>>>>>> All,
>>>>>>>>  While trying to use openser version 1.2.0 on centos, we  
>>>>>>>> have found
>>>>>>>> that
>>>>>>>> /forward_request() /function prints out error
>>>>>>>> *"ERROR:forward_request: unable to compute branch"*
>>>>>>>> We noticed this in the case of REGISTER message egressing  
>>>>>>>> out of
>>>>>>>> OpenSER
>>>>>>>> (using it as a proxy). Unless we are
>>>>>>>> missing something in the big picture, we suspect that the code
>>>>>>>> inside
>>>>>>>> /if (msg->add_to_branch_len == 0)/  should try to compute  
>>>>>>>> the branch
>>>>>>>> parameter value (branch_builder()) if one is
>>>>>>>> not found during invokation of get_sl_branch( ).
>>>>>>>> In the whole code base there is only one invokation of
>>>>>>>> branch_builder
>>>>>>>> inside tm modules and we suspect that for case of
>>>>>>>> message ingress'ing.
>>>>>>>>
>>>>>>>> If this is a bug, is there already an open ticket/issue for  
>>>>>>>> this ?
>>>>>>>>
>>>>>>>> Thanks
>>>>>>>> Gaurav Kulshrehstha
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> _______________________________________________
>>>>>>>> Devel mailing list
>>>>>>>> Devel at openser.org
>>>>>>>> http://openser.org/cgi-bin/mailman/listinfo/devel
>>>>>>>>
>
> _______________________________________________
> Devel mailing list
> Devel at openser.org
> http://openser.org/cgi-bin/mailman/listinfo/devel




More information about the Devel mailing list