[Devel] ACKs for negative replies

Bogdan-Andrei Iancu bogdan at voice-system.ro
Fri Apr 21 12:30:41 CEST 2006


Hi Elias,

indeed the build_dlg_ack() was specially designed to build acks for 2xx 
replies and not for negative replies - and there are different building 
algorithms....

please post this bug on the tracker and I will take care of it.

thanks and regards,
bogdan

Elias Baixas wrote:

>Hi all,
>I was referring to send_ack for local transactions, where
>build_dlg_ack() is used (I thought I had told it, but now I see it
>slipped off my mind !! sorry :P)
>
>thanks,
>
>Elias
>
>
>On Tue, 2006-04-18 at 11:34, Bogdan-Andrei Iancu wrote:
>  
>
>>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
>>>
>>>      
>>>
>>    
>>
>
>
>_______________________________________________
>Devel mailing list
>Devel at openser.org
>http://openser.org/cgi-bin/mailman/listinfo/devel
>
>  
>




More information about the Devel mailing list