(Transaction Module, local UAC transactions)
When the ACK is built for a response to a local UAC
transaction, it is build using build_dlg_ack().
the ACK's request-URI is created from the Route-Set (if
it exists) or from Contact (if no route-set), although
section 17.1.1.3 (construction of the ACK request) in
3261 says that the ACK must have the same
request-URI,From and Call-ID headers as the original
INVITE. So the request-URI should be taken from the
transaction buffer (t->uac[0].request).
I've found that changing build_dlg_ack() with:
process_routeset(rpl,&contact,&list,&ruri,&next_hop)
to
process_routeset(rpl,&Trans->uac[0].uri,&list,&ruri,&next_hop)
and then
if((contact.s != ruri.s)||(contact.len!= ruri.len)){
to
if((Trans->uac[0].uri.s!=ruri.s)||(Trans->uac[0].uri.len
!=ruri.len)){
fixes this behavior.
Logged In: YES
user_id=1275325
Elias,
the fix was slightly different - it was committed on CVS.
Please update and see if works properly for both 2xx and
negative replies.
If there are still some problems, please re-open the bug report.
Thanks and regards,
Bogdan