On Sep 24, 2009 at 10:38, Daniel-Constantin Mierla miconda@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#re...
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