The crux of this is described in RFC 3261 section 9.2: The fact that the UAS sends, or the UAC receives, a 200 response to the CANCEL tells nothing about whether the INVITE transaction was canceled, it only says that the UAS found a matching transaction (which may be in a waiting state after a 200 response was sent). The UAS indicates that the INVITE was canceled by responding 487 *to the INVITE transaction*.
As a design question, this approach solves a myriad of race conditions: The ultimate arbiter is the UAS at which the call is canceled, and it indicates whether the call was canceled by the choice of 487 vs. 200 as a response to the INVITE. Every other entity in the path can determine the outcome by monitoring that response. Dale _______________________________________________ Sip-implementors mailing list Sip-implementors@lists.cs.columbia.edu https://lists.cs.columbia.edu/mailman/listinfo/sip-implementors