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

Reply via email to