[Devel] ACKs for negative replies

elias elias.baixas at voztele.com
Thu Apr 13 21:53:07 CEST 2006


Hi all, I've been looking at the source code in "send_ack" in 
(tm/t_reply.c) and I've found that for local transactions, 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
    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. I dont know if this breaks som 
2543-compatibility... but I think not, because if the next hop is a 
strict-router, then (Trans->uac[0].uri.s != ruri.s) will be true, so the 
contact-uri will be appended at the end of the Route list.

best regards,

Elias Baixas



More information about the Devel mailing list