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