2011/8/8 Alex Hermann alex@speakup.nl:
You're correct from an rfc point of view. I made this patch because i've seen the 487 loose from an earlier received response, even though the caller cancelled the call and would expect a 487 as repsonse tot the INVITE.
Don't you think that if a caller cancels a call, the response to the INVITE should always be 487, even if there are (higher priority) responses from other branches?
When a UAC sends a CANCEL and receives 200 (CANCEL) from the proxy, it's done. Of course it must wait (*in background*) for a final reply to the INVITE. This is indeed 487 usually, but anything can occur (even a transaction timeout, so local 408) and it should not affect at all to the UAC (and ever less to the human managing the device).
I don't think that a proxy should give preference to an existing 487 after CANCEL is received. It could, but I see no need for that.
Regards.