Singh, Indresh (SNL US) wrote: > > Hope below helps. > > Regards, > > Indresh > -----Original Message----- > From: [EMAIL PROTECTED] > [mailto:[EMAIL PROTECTED] On Behalf Of Nina > Garaca > Sent: Friday, March 30, 2007 5:35 AM > To: [email protected] > Subject: [Sip-implementors] Potential race condition between UPDATE and > 200 OK to INVITE and UPDATE related questions ++ > > Hi all, > > I have some questions regard potential race condition between UPDATE and > > 200 OK to INVITE which following picture illustrates: > > A B > > INVITE > |-------------------------------------->| > 180 rel > |<--------------------------------------| /Early dialog established/ > PRACK > |-------------------------------------->| > 200 (PRACK) > |<--------------------------------------| > UPDATE > |-------------------------------------->| > 200 OK (INVITE) > |<--------------------------------------| > 200 OK (UPDATE) > |<--------------------------------------| > > Q1: Is this valid situation, and if UPDATE was a target refresh request, > does it updates the local target? > > >>> Yes it is valid situtation. Let us say we had a B2BUA involved and >>> > there is another leg of the call. Then terminating side may have > answered and UAS may be forwarding that 200 OK towards originating side, > at the same time the originating side may have requested a > media-modification in early dialog state. > > >>> Base RFC-3261 suggests that re-INVITE is the only target refresh >>> > request. But section 5.1 of RFC-3311 is over-riding/expanding this. > Target-Refresh requests over-write the remote-target-uri, not the local > target on the UAS. On the UAC side there is some thing called local URI > > UPDATE is a target refresh request. As specified in RFC 3261 [1], > this means that it can update the remote target of a dialog. > > A B > > INVITE > |-------------------------------------->| > 180 > |<--------------------------------------| > 200 OK (INVITE) > |<--------------------------------------| > UPDATE > |-------------------------------------->| > 200 OK (UPDATE) > |<--------------------------------------| > > Q2: Is it OK for UPDATE to be sent after the 200 OK to INVITE and before > ACK is sent, and if it was the second refresh target request would it > change/update the local target? > > A B > > INVITE (C = LT1) > |-------------------------------------->| > 180 > |<--------------------------------------| > 200 OK (INVITE) > |<--------------------------------------| > ACK > |-------------------------------------->| // C = Contact, LT = local > target > reINVITE (C = LT2) > |-------------------------------------->| > 180 > |<--------------------------------------| > UPDATE (C = LT3) > |-------------------------------------->| > 200 OK (UPDATE) > |<--------------------------------------| > 200 OK (reINVITE) > |<--------------------------------------| > ACK > |-------------------------------------->| > > >>> Do not think that an UPDATE can be sent by A after receiving 200 OK >>> > and before sending ACK. UPDATE is used for media re-negotiation and > definitely can be used in place of re-INVITEs, but re-INVITEs are only > sent after successful completion of previous INVITE transactions ( 3-way > handshake ). > > Q3: Is it OK for UPDATE to be sent when re INVITE isn't actually > responded with the final response? And what will be the dialog local > target LT2 or LT3? According to RFC3311 I presume that 200 OK to > reINVITE should have the same Contact as UPDATE or its response. > > >>> Have never seen a 180 Ringing for a re-INVITE. Why would a UAS send >>> > 180 for a re-INVITE ? > > and finnaly: > > A B > > INVITE (C = LT1) > |-------------------------------------->| > 180 > |<--------------------------------------| > 200 OK (INVITE) > |<--------------------------------------| > ACK > |-------------------------------------->| // C = Contact, LT = local > target > reINVITE (C = LT2) > |-------------------------------------->| > 180 > |<--------------------------------------| > UPDATE (C = LT3) > |-------------------------------------->| > 200 OK (UPDATE) > |<--------------------------------------| > 4xx OK (reINVITE) > |<--------------------------------------| > ACK > |-------------------------------------->| > > Q4: Which is new dialog local target LT2 or LT3? I should say LT3. > > >>> What is local target in dialog ? There is only local uri ( from >>> > header ) remote uri ( to header ) remote target uri ( contact header ) ? > Am I missing something. Do not know ? > > Thanks very, very match in advance. > Nina. > >
Hi, again Thanks very much for answering my questions. As for the Q3, and the situation with the 180 response, I wasn't really thinking about the response meaning (copy paste), so yes, that was clearly my mistake. And I am very sorry for using an inappropriate term "local target", what I've meant by that was a new value of Contact header field in the target refresh requests which should have impact on the dialog's remote target. So I would really appreciate if You would try to answer my (now modified) questions Q3 and Q4 again, after these clarifications. A B INVITE (C1) |-------------------------------------->| 180 |<--------------------------------------| 200 OK (INVITE) |<--------------------------------------| ACK |-------------------------------------->| // C = Contact target reINVITE (C2) |-------------------------------------->| 1xx |<--------------------------------------| UPDATE (C3) |-------------------------------------->| 200 OK (UPDATE) |<--------------------------------------| 200 OK (reINVITE) |<--------------------------------------| ACK |-------------------------------------->| Q3: Is it OK for UPDATE to be sent when re INVITE isn't actually responded with the final response? And what will be the dialog remote target C2 or C3? According to RFC3311 I presume that 200 OK to reINVITE should have the same Contact as UPDATE or its response. A B INVITE (C1) |-------------------------------------->| 180 |<--------------------------------------| 200 OK (INVITE) |<--------------------------------------| ACK |-------------------------------------->| // C = Contact target reINVITE (C2) |-------------------------------------->| 180 |<--------------------------------------| UPDATE (C3) |-------------------------------------->| 200 OK (UPDATE) |<--------------------------------------| 4xx OK (reINVITE) |<--------------------------------------| ACK |-------------------------------------->| Q4: Which is new dialog remote target C2 or C3? I should say C3. Best Regards Nina. -- Nina Garaca Software Development & Testing --- "ZESIUM mobile" d.o.o. Valentina Vodnika 8/9 21000 Novi Sad Serbia Tel: +381 (0)21 472 15 48 Fax: +381 (0)21 472 15 49 Mob: +381 (0)63 16 15 891 E-mail: [EMAIL PROTECTED] _______________________________________________ Sip-implementors mailing list [email protected] https://lists.cs.columbia.edu/cucslists/listinfo/sip-implementors
