Menu

#585 Branch route has wrong ruri or missing headers

ver 1.4.x
open
nobody
None
5
2009-07-16
2009-07-16
No

The scenario:
In branch route, I rewrite the ruri and add an additional header. When the destination fails and DNS-based failover takes place, the branch route is called again. For this second branch, the ruri is not the same as the ruri at t_relay time. Also the extra header is missing.

So this bug could be either:

- The ruri and rest of variables/packet for each branch should be the same as the ruri at t_relay time
or
- The header added in the first branch route should also be present for the second branch (in the case of DNS-based failover)

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.

Before t_relay:

$rU = "*1234567890"
t_relay("0x03");

my branch route:
xlog("L_NOTICE", "Branch: <$ru> via <$du>\n");
if (is_method("INVITE") and $(rU{s.substr,0,3}) == "*12") {
strip(3);
append_hf("X-Test: 12\r\n");
}

The log:

Jul 15 09:14:38 Branch: <sip:*1234567890@test.domain;transport=udp> via <<null>>
Jul 15 09:14:38 Reply Status: 503 Service Unavailable
Jul 15 09:14:38 Branch: <sip:234567890@test.domain;transport=udp> via <<null>>
Jul 15 09:14:38 Reply Status: 100 Trying

Discussion

  • Alex Hermann

    Alex Hermann - 2009-09-04

    And when there is no response at all from th destination, resulting in a local generated 408, the behaviour is even different. Then branch route isn't called at all, but the packet headed for the failover host is different from the original as it misses any headers added in the branch route.

     
  • Daniel-Constantin Mierla

    Have you said on the mailing list that calling t_on_branch() from branch_route gets what you need?

     
  • Alex Hermann

    Alex Hermann - 2009-11-10

    It does, but the inconsistency stays. The ruri in branch_route after DNS failover is different from the ruri in the branch_route of the initial t_relay if in that branch_route, the ruri is rewritten.

     

Log in to post a comment.