On Thu, 2006-05-25 at 19:39 +0530, Madhuri Sakhare wrote:
> Consider this call flow:
> 
>     UAC                      UAS       
> 
>      |         INVITE         |
> 
>      |----------------------->|
> 
>      |      180 RINGING       |
> 
>      |<-----------------------|
>  
>      |        CANCEL          |
> 
>      |----------------------->|           
> 
>      |      200 OK CANCEL     |
> 
>      |<-----------------------|
> 
>      |                        |
> 
> 
>      This is a collision case of a reliable 180 response and a CANCEL
> Request. The application on the callee side has sent a 200 OK response,
> and the response is left pending in the SIP stack.  Then the collision
> occurs and the CANCEL is indicated to the application, but since it has
> already sent a final response, it has no way of sending another one. The
> call is not freed.

There is a 200 OK response to the CANCEL, but there has not yet been a
final response to the INVITE.  Thus, UAS must send a 487 response
(Request Terminated).

I believe your confusion stems from assuming that the INVITE and the
CANCEL are part of one transaction, and that the 200 for the CANCEL
functions as a final response for the INVITE.  It does not.  The INVITE
and the CANCEL initiate different (but related) transactions, and each
transaction gets its own final response.

Dale

--- 
interop.pingtel.com -- the public SIP phone interoperability test server

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

Reply via email to