What UA1 does with a 200-OK response to the INVITE is same whether the
CANCEL response comes first or not. Even though a CANCEL has been sent, the
INVITE transaction must still be completed. All transaction complete
independently. The CANCEL is a separate transaction, not part of the INVITE
transaction. UA1 still has to wait for a final response to the INVITE. If
the CANCEL does not reach UA2 in time, UA1 will receive the 200-OK to the
INVITE. UA1 needs ACK the 200-OK and then send a BYE to terminate the
completed session.
UA1 B2BUA UA2
| INVITE | INVITE |
|---------------------------->|------------------------->|
| | |
| 180 | 180 |
|<----------------------------|<-------------------------|
| | 200 (INV) |
|CANCEL 200(INV) |<-------------------------|
|------------->\ /<-----------| (race condition) |
| 200(INV) \ | |
|<-------------/ \ | |
| \ CANCEL | |
| \--------->| |
| | |
| 481(CAN) | |
|<----------------------------| |
| | |
| ACK | |
|---------------------------->| ACK |
| |------------------------->|
| BYE | |
|---------------------------->| BYE |
| |------------------------->|
| | 200 (BYE) |
| 200(BYE) |<-------------------------|
|<----------------------------| |
| | |
cheers,
(-:bob
Robert F. Penfield
Chief Software Architect
Acme Packet, Inc.
130 New Boston Street
Woburn, MA 01801
[EMAIL PROTECTED]
----- Original Message -----
From: "Sushil Kumar Verma" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Friday, March 05, 2004 11:45 AM
Subject: [Sip-implementors] race condition
Hi All,
Please help me for the following race condition scenario...
UA1 B2BUA UA2
| INVITE | INVITE |
|---------------------------->|------------------------->|
| | |
| 180 | 180 |
|<----------------------------|<-------------------------|
| | 200 |
| CANCEL 200 |<-------------------------|
|---------> <---------| (race condition) |
| 200 | |
| <------------ | |
| CANCEL | |
| ------------>| |
| | |
| | |
| | |
| | |
When a UA1 sends INVITE to a B2BUA (or statefull Proxy) which than forwards
it to UA2.
UA2 answers by sending 200 OK which B2BUA forwards to UA1 , but before
receiving 200 OK UA1 sends CANCEL. In that case
Q1.What will UA1 do when he receives 200 OK after sending CANCEL?
Will UA1 ignore 200 OK or will he send some 4xx (say 403) response for
CANCEL?
Q2.What should B2BUA do ? Should he send CANCEL to UA2 or he should send
ACK (for INVITE) and than BYE to UA2?
Q3. WHat will a terminating UA2 do if he sends 200 OK and immidiatly after
that receives CANCEL(rather than getting ACK)?
In other words,
Will B2BUA (or statefull proxy ) accept CANCLE after sending 200 OK(answer)
and forwards it to termitaing UA?
or B2BUA will ignore it?
or it will send 200 OK (for CANCEL) and 487 Response(for INVITE) to UA1
and on the other side It will send ACK(for INVITE) and then send BYE to UA2?
Thanks for advance.
regards,
Sushil
----------------------------------------------------------------------------
----
> _______________________________________________
> Sip-implementors mailing list
> [EMAIL PROTECTED]
> http://lists.cs.columbia.edu/mailman/listinfo/sip-implementors
>
_______________________________________________
Sip-implementors mailing list
[EMAIL PROTECTED]
http://lists.cs.columbia.edu/mailman/listinfo/sip-implementors