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
