The material appended to this note consists of four scenarios. Each is
(I believe) a race condition not described in
draft-ietf-sipping-race-examples-06
You will need to view this message in a fixed-width font.
These were discovered by analysis of a formal model of INVITE dialogs,
as posted on
http://www.research.att.com/~pamela/sip.html
What do you think?
Pamela Zave
SCENARIO 1. This scenario occurs within a confirmed dialog.
UAC UAS
re-INVITE 1
<------------------------------------------------------
no sdp
200(re-INVITE 1)
------------------------------------------------------>
offer
ACK 1
-------------------------
/ answer
/ re-INVITE 2
! <--------------------------/---------------------------
/ offer
/
<------------------------
200(re-INVITE 2)
------------------------------------------------------>
answer
ACK 2
<------------------------------------------------------
At the point marked "!", the UAC cannot respond to the re-INVITE
immediately. It must buffer this request until it receives ACK 1,
which completes the ongoing offer/answer exchange.
SCENARIO 2.
UAC UAS
ini-INVITE
------------------------------------------------------>
offer
183(reliable) 1
<------------------------------------------------------
answer
PRACK 1
------------------------------------------------------>
no sdp
200(PRACK 1)
<------------------------------------------------------
UPDATE 183(reliable) 2
------------------------- -------------------------
offer \ / offer
x
/ \
! <------------------------ ------------------------>
491(UPDATE)
<------------------------------------------------------
PRACK 2
------------------------------------------------------>
answer
200(PRACK 2)
<------------------------------------------------------
At the point marked "!", the UAC cannot respond to the 183 immediately,
although immediate response is required by the standard. Rather, it
must
wait until it receives the response to the UPDATE, which will terminate
the ongoing offer/answer exchange. The UAC CANNOT assume that the
update
will fail, because it may succeed, as shown in the next scenario.
SCENARIO 3. This scenario has roughly the same problem as Scenario 2,
although the race condition that causes it is different.
UAC UAS
ini-INVITE
------------------------------------------------------>
offer
183(reliable) 1
<------------------------------------------------------
answer
PRACK 1
------------------------------------------------------>
no sdp
200(PRACK 1)
<------------------------------------------------------
UPDATE
------------------------------------------------------>
offer
200(UPDATE)
-------------------------
/ answer
/
! <--------------------------/---------------------------
/ 183(reliable,offer) 2
/
<------------------------
PRACK 2
------------------------------------------------------>
answer
200(PRACK 2)
<------------------------------------------------------
SCENARIO 4.
UAC UAS
ini-INVITE
------------------------------------------------------>
offer
183(reliable)
<------------------------------------------------------
answer
PRACK
------------------------------------------------------>
offer
200(PRACK)
----------------------
/ answer
/
/ 200(ini-INVITE)
<----------------------------/-------------------------
/ no sdp
/
ACK /
-------------------------/---------------------------->
/
/ re-INVITE
! <---------------------/--------------------------------
/ offer
/
<-------------------
200(re-INVITE)
------------------------------------------------------>
answer
ACK
<------------------------------------------------------
At the point marked "!", the UAC cannot respond to the re-INVITE
immediately. It must buffer this request until it receives 200(PRACK),
which completes the ongoing offer/answer exchange.
_______________________________________________
Sipping mailing list https://www.ietf.org/mailman/listinfo/sipping
This list is for NEW development of the application of SIP
Use sip-implementors@xxxxxxxxxxxxxxx for questions on current sip
Use sip@xxxxxxxx for new developments of core SIP