Hi,


Marc Petit-Huguenin wrote:

Reposted, as I really would like to have a definitive answer on this.

Thanks.



I would like to have a confirmation that an UAS must be ready to receive a
new INVITE in a dialog as soon a response was sent for the previous INVITE.
More precisely, the UAS must not wait for the ACK before accepting the next
INVITE.


My reasoning is based on the fact that RFC3261 section 14.1 says that "If
there is an outgoing INVITE client transaction, the TU must wait until the
transaction reaches the completed or terminated state before initiating the
new INVITE." As an INVITE transaction reaches the completed or terminated
state as soon a non-provisional response is received, the next INVITE can
be sent at the same time the ACK for the 200 response is sent. As the
packet ordering can change, the INVITE can arrive at the UAS before the
ACK. So this mean that the server should be prepared to receive the next
INVITE before receiving the ACK.



Completed State for client-invite is reached only when the response was 3xx-6xx, and not any non-provisional response (I mean 200 ).
As per section 13.3.1.4 , 2xx retransmission is handled by UA core.A 2xx response is passed to Transport layer periodically, for all protocols, until an ACK is received. This retransmission starts at T1 seconds, and doubles until it reaches T2 seconds.


Finally if the there is no ACK, session SHOULD be terminated, by sending a BYE.

So Answer to your question : UAS must wait for an ACK, before accepting any request within the dialog.


Again, I disagree with this interpretation. If it was true, it means that the UAC must wait 32 seconds (64*T1) before sending the second reINVITE to be sure that the ACK is received by the UAS, or that a BYE is sent by the UAS in case all the ACK are lost.
UAC need not wait to send a re-Invite, it is the UAS that say no to the re-Invite, because the 3-way handshake of previous Invite(The original Invite) is not yet complete. It does not make any sense to change the parameters, until there "exist" some parameters (which will exist only after the Call is esatblished, i.e. Invite-Ok-Ack is Complete).

This means that a phone must wait 32 second after the establishment of a call before be able to put a call on hold. And wait again 32 seconds before be able to un-hold. No very useable.
Establishment of call means the RTP session has started. This wont until the 3-way handshake is complete. A phone need not wait for 32 sec "After" establishment of the call. There after it can put on hold.

Hope this explains :)
mukul

_______________________________________________
Sip-implementors mailing list
[EMAIL PROTECTED]
http://lists.cs.columbia.edu/mailman/listinfo/sip-implementors

Reply via email to