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.
--
Iñaki Baz Castillo
<ibc(a)aliax.net>