< Previous by Date Date Index Next by Date >
< Previous in Thread Thread Index  

Re: [reSIProcate-users] Postpone ACKs in proxies


2009/8/18 Adam Roach <adam@xxxxxxxxxxx>:
> Are you using the repro proxy code, or trying to build a proxy from the DUM
> code?

It's a stateful proxy built using DUM. Actually, it's quite
comfortable and except this issue everything works just fine.

> The description you give -- sending an ACK immediately in response to a 200
>  -- makes it sound like you're using DUM. Unfortunately, it's not possible
> to build a proxy from DUM; the closest you can do is create a back-to-back
> user agent.
>
> If you really intend to build a proxy, take a look at the repro directory.

That would definitely be a way though I'd lose a lot of comfort
dropping DUM. Anyway, thanks a lot for the response!

Vladimir.

>
> /a
>
> Vladimír Třebický wrote:
>>
>> Hi,
>>
>> first of all, thanks for the great software! I'm using resip in a SIP
>> proxy:
>>
>> UAC <-> Proxy <-> UAS
>>
>> Now, as call is being established, UAS sends OK to Proxy which
>> responds with ACK right ahead. Proxy then passes the OK to UAC, which
>> also responds with ACK. Proxy performs some nontrivial actions
>> (database calls, etc.) that might take some time (let's say up to 1
>> second in high load). Resip however sends the ACK right ahead, which
>> means that UAS start sending audio 1 second before UAC starts
>> accepting it.
>>
>> According to RFC3261, [Page 123], Chapter 17 Transactions:
>>
>>   The 2xx response and its ACK receive special treatment.  This
>>   response is retransmitted only by a UAS, and its ACK generated only
>>   by the UAC.  This end-to-end treatment is needed so that a caller
>>   knows the entire set of users that have accepted the call.  Because
>>   of this special handling, retransmissions of the 2xx response are
>>   handled by the UA core, not the transaction layer.  Similarly,
>>   generation of the ACK for the 2xx is handled by the UA core.  Each
>>   proxy along the path merely forwards each 2xx response to INVITE and
>>   its corresponding ACK.
>>
>> As far as I know, ACK is sent even before OnEstablished() is called
>> (see dum/ClientInviteSession.cxx) and I can only amend its content in
>> OnReadyToSend(). Is there a way for me to comply with this?
>>
>> Thanks!
>> Vladimir.
>> _______________________________________________
>> resiprocate-users mailing list
>> resiprocate-users@xxxxxxxxxxxxxxx
>> List Archive: http://list.resiprocate.org/archive/resiprocate-users/
>>
>
>