From: Nina Garaca <[EMAIL PROTECTED]>

   A                                       B

   INVITE
   |<--------------------------------------|
   180 (with To tag)
   |-------------------------------------->| /Early dialog established/
   UPDATE
   |-------------------------------------->|
   408/481
   |<--------------------------------------|
   ???
   |-------------------------------------->|

   /RFC 3261/15 says:/
   /   The caller's UA MAY send a BYE for either/
   /   confirmed or early dialogs, *and the callee's UA MAY send a BYE on*/
   /*   confirmed dialogs, but MUST NOT send a BYE on early dialogs.*/
   /*   However, the callee's UA MUST NOT send a BYE on a confirmed dialog*/
   /*   until it has received an ACK for its 2xx response or until the server*/
   /*   transaction times out. */

   /RFC 3311/5.3 //says:/      
      /If a UA receives a non-2xx final response to a UPDATE, the session/
   /   parameters MUST remain unchanged, as if no UPDATE had been issued./
   /   Note that, as stated in Section 12.2.1 of RFC 3261 
   <http://tools.ietf.org/html/rfc3261#section-12.2.1> [1 
   <http://tools.ietf.org/html/rfc3311#ref-1>], *if the non-*/
   /*   2xx final response is a 481 (Call/Transaction Does Not Exist), or a*/
   /*   408 (Request Timeout), or no response at all is received for the*/
   /*   UPDATE (that is, a timeout is returned by the UPDATE client*/
   /*   transaction), the UAC will terminate the dialog.*/

   Q1: The question is, how can UA (that is callee/hasn't initiated dialog) 
   that has sent the UPDATE, terminate the dialog, when that /*UA MUST NOT 
   send a BYE*/?
   Q2: What is the solution of this situation?

Clearly, A cannot send a BYE, but it can otherwise discard its
knowledge (and user interfact presentation) of the dialog.

If A receives 481, it knows that B has lost knowledge of the (early)
dialog (perhaps because some other fork has returned 2xx), or that the
180 was lost.  As far as I can tell from RFC 3311, section 4, para. 3,
if B did not receive the 180, it is required to reject the UPDATE with
481.  RFC 3311 prescribes that A terminate the dialog, but it seems to
me that it could resend the 180 and try the UPDATE again.  In
practice, A should use 100rel, and only send UPDATE when it has
received a PRACK showing that B has established the early dialog.

If A receives 408, RFC 3311 says that it must terminate the dialog,
but that seems overly strict, and I think that it should retry the
UPDATE a couple of times.

Dale
_______________________________________________
Sip-implementors mailing list
[email protected]
https://lists.cs.columbia.edu/cucslists/listinfo/sip-implementors

Reply via email to