Daniel-Constantin Mierla writes:
is a second call of next_gw() in route block always
appending a branch?
or is updating the r-uri/dst-uri?
daniel,
second and later invocations of next_gw() always append a branch, which
now has turned out to be wrong.
In this case when t_relay failed, transaction is
created, probably the
first branch is set in transaction structure, but to see what is its
states, need to get into sources...
next_gw() is not checking is transaction exists. it knows based on an
avp value if next_gw() call is first or not. it is not first, it always
appends a branch.
i try to figure out an algorithm that works no matter if t_relay()
creates a transaction or not.
this mess could be avoided by implementing the same behavior as
opensips:
2.2 Append_branch() usage
There is no need to call "append_branch()" function in failure_route in
order to use the RURI - you still need to use it only if you want to do
parallel forking.
Ex:
# in 1.4.x
failure_route[2]
if (t_check_status("408")) {
# set new RURI
rewritehostport("my_voicemail.com:5060");
append_branch();
t_relay();
}
}
->
# in 1.5.x
failure_route[2]
if (t_check_status("408")) {
# set new RURI
rewritehostport("my_voicemail.com:5060");
t_relay();
}
}
after that, life would be much simpler.
-- juha