Hi Klaus,
On 02/29/2012 03:53 PM, Klaus Darilion wrote:
However
if a 407 is relayed back from the registrar via the lb to the
UA, it sends an ACK, again with pre-loaded Route header like in the
initial INVITE, this time with to-tag. In that case, loose_route()
returns true, but the $du is $null and the R-URI is still the same.
What else should happen? $du will not be set as there is no more Route
header. And R-URI is never changed (except with strict routers).
Well, I tried to reproduce my problem, now I have two problems :)
Proxy is running on 192.168.51.133:5060, and client (linphone-3) sends a
header "Route:<sip:foo@192.168.51.133:5060;lr>" in the ACK after 407
(and it's the only Route header). For some reason (and I haven't figured
it out yet), loose_route() now removes the Route header, puts it into
$du and also puts it into $ru, so I end up with an ACK being sent to
itself AND with a crippled $ru.
That's really weird. It should not rewrite $ru. Maybe there is some
special handling for ACK.
Anyway, if the Route header is consumed and pushed into $du it means
that the "special behavior" which was done for the INVITE
(loose-route==0) is not used here. IIRC these special behavior is only
triggered if the request does not contain a to-tag.
If tm is used, it will take care of this by consuming the ACK and
generating a new one. It seems that we need some fixes for stateless
routing.
regards
Klaus