[Devel] ACKs for negative replies

Bogdan-Andrei Iancu bogdan at voice-system.ro
Tue Apr 18 11:34:37 CEST 2006


Hi Elias,

not sure which part of code you are referring to. If you look to 
send_ack(), for non local transactions, build_local() is used for 
building the ACK....and this function uses the send URI of the 
corresponding branch (Trans->uac[branch].uri.len) - as in RFC 3261.

try to give me more hints about the location of the code to you are 
referring to (starting from  send_ack() ).

regards,
bogdan

elias wrote:

> 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
>
> _______________________________________________
> Devel mailing list
> Devel at openser.org
> http://openser.org/cgi-bin/mailman/listinfo/devel
>




More information about the Devel mailing list