[sr-dev] [ openser-Bugs-2822344 ] Branch route has wrong ruri or missing headers
Andrei Pelinescu-Onciul
andrei at iptel.org
Thu Sep 24 11:18:11 CEST 2009
On Sep 24, 2009 at 10:38, Daniel-Constantin Mierla <miconda at gmail.com> wrote:
>
>
> 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.
I don't think it would be needed in this case. By default sip-router tm
uses exactly what was sent on the last branch when doing dns failover.
See
http://sip-router.org/docbook/sip-router/branch/master/modules/tm/tm.html#reparse_on_dns_failover
So this should solve the header added in a branch route and not
preserved on dns failover and you don't have to add anything to the
script (provided you use sip-router or kamailio 3.0).
One thing to note though, is that branch route is not called when doing
dns failover, if reparse_on_dns_failover is set to 1.
Andrei
More information about the sr-dev
mailing list