Andrei Pelinescu-Onciul writes:
that sounds
too complicated and risky. would the change that i suggest
in above be more difficult to implement?
It would be slightly more difficult (definitely not only 1 changed
line). Basically we would need to remember if ruri is can be used for
branches or not. On new message set ruri_is_new=1 (ruri_is_new being a
new static var inside dset.c) and on clear_branches() set it to 0. Then
change t_forward_non_ack() and use ruri_is_new instead of
first_branch==0 for the first add_uac().
For failure route ruri_is_new should be set to 0.
Each time a new uri is set, ruri_is_new should also be set to 1.
Probably the same should be done if dst_uri is changed.
sounds ok except the last point. i would think that every time
ruri_is_new is set to 1, dst_uri should be cleared. once new
request-uri is set, dst uri must be set too if it is going to be
needed.
some solution to this problem is needed since it is currently impossible
to make next_gw() and next_branches() work correctly and if the above is
the simplest one, then it would make sense to implement it.
-- juha