Despite the best intentions of the developers, unusual situations occur that sometimes test the limits of the protocol and the patience of the customers.
Figure 7-11. Forking, call forwarding from two proxies to the same phone
Two Users Hang Up Simultaneously
Case #1, shown in Figure 7-12, is what usually happens.
Figure 7-12. Case #1, simultaneous hang-up
BYE and CANCEL: Similar but Not Interchangeable
In Case #2 (Figure 7-13), when phone A receives the BYE, it may not know about the call anymore. It could return a 404 or 200 message. It’s weird because the 200 had to pass the BYE in the network. This seldom happens, but it is possible.
Hanging up a ringing call should cancel the INVITE and not send a BYE. In our testing, we have come across some buggy implementations where a phone would continue ringing long after the caller had sent a BYE. We would have to pick the phone up and hang it up to stop its ringing.
Figure 7-13. Case #2, simultaneous hang-up
This is not a problem with the protocol. This was a problem with how the SIP User Agent was written. The point we’re making is that while the BYE and CANCEL messages might appear to have a similar purpose, they are not interchangeable. ...