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

Reply via email to