2010/5/4 Alex Hermann alex@speakup.nl:
On Friday 30 April 2010 13:25:13 Iñaki Baz Castillo wrote:
Yes, I agree. In fact draft invfix solves it by adding a new state "Accepted" so when a 200 is sent the server transaction remains in memory for a while (to absorbe INVITE retransmissions).
But anyway the transaction is in "Accepted" state, and not in "Proceeding", so a CANCEL should have no effect and the proxy shouldn't reply 200 for the CANCEL as the proxy has canceled *nothing*.
The response to the CANCEL doesn't indicate if anything has been canceled (just that the CANCEL is well received), the response to the INVITE does. Answering 200 OK to the CANCEL is the least interuptive response as it won't trigger an error in the UAC. A 481 might trigger that the call is aborted as the UAC might think the dialog is invalid. If the 200 OK is received by the UAC, it should handle it just like the well known INVITE + 200 OK / CANCEL race for which it should send a BYE if the dialog is to be ended.
Interesting point of view. Maybe it's just easier as you describe.