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

[reSIProcate-users] Postpone ACKs in proxies


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.