[sr-dev] [ openser-Bugs-2822344 ] Branch route has wrong ruri or missing headers

Daniel-Constantin Mierla miconda at gmail.com
Thu Sep 24 10:38:12 CEST 2009



On 24.09.2009 10:28 Uhr, Alex wrote:
> On Friday 04 September 2009, Juha Heinanen wrote:
>   
>> SourceForge.net writes:
>>  > I would either expect the ruri and all other variables and headers to
>>  > be exactly the same as at t_relay time for each branch, or (for
>>  > DNS-based failover ONLY) the packet sent to a failover destination to
>>  > be exactly the same as the first branch (including any added headers
>>  > / from replacement, etc.) Not a mix of both.
>>
>> if i add a header in branch route, i want it to be there ONLY for that
>> branch, not for any other branch.
>>     
>
> Of course, and you'd probably expect that changing the RURI in branch route 
> is only for that branch. Unfortunately both statements are not fulfilled by 
> Kamailio.
>   
not sure I got this one. Headers and r-uri on updated on a branch route 
are visible on that branch only.


> If you add a header for a specific destination domain, you'd probably want 
> it to be sent to every ip if there are multiple ip's in the domains SRV 
> records. Currently it doesn't work for DNS based failover:
>
> In case a 503 is received, you can add the header again from the script, as 
> branch route is called again for the next IP. Keep in mind you don't get the 
> RURI you set before t_relay(), but the RURI set in the previous branch 
> route.
>   

DNS failover is pretty much hidden to script writer, and each step 
creates a new branch. Also remember that this is serial forking, so a 
branch from a branch, not parallel, branches from initial invite.

> In case there is a timeout, you're lost. No branch route is called, and the 
> header is missing.
>   

Failure route is processing the initial message. Hopefully lot of such 
limitations will be removed in kamailio 3.0 with the new function 
msg_apply_changes() from textops where the script writer can apply 
changes, therefore make new headers permanent before creating the 
transaction and going into the forking logic.

Cheers,
Daniel

> Unfortunately the above is a very common scenario: LCR. When every carrier 
> requires a specific RURI format, require some additional headers and that 
> the carriers are reachable over SRV records. 
>
>
> A quick workaround would be that on DNS based failover in case of a timeout, 
> branch route is called again. I tried to find in the source the place where 
> the decision is made whether or not to call branch route on DNS failover, 
> but got lost.
>
>
> Alex.
>
> _______________________________________________
> sr-dev mailing list
> sr-dev at lists.sip-router.org
> http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev
>
>   

-- 
Daniel-Constantin Mierla
* http://www.asipto.com/




More information about the sr-dev mailing list