[OpenSER-Devel] [Serdev] Possible bug in the tm module in the presence of packet loss/branches

Anatoly Pidruchny apidruchny at newxt.com
Thu Mar 13 14:50:57 CET 2008


Dan Pascu wrote:
> What I would find useful in this case is that once a CANCEL has arrived, 
> all call setup activities should cease on all branches, with or without 
> provisional replies and if a 200 OK comes later it should be ignored and 
> instead a CANCEL should be forwarded to indicate that the 200 OK is late 
> and is no longer accepted by the originator. Maybe this is not specified 
> by the RFC, but I believe it to be a much better choice than to forward 
> the 200 OK, then ACK it and then send a BYE to close the call.
>   

Sending CANCEL to UAS after receiving 200 OK from the UAS will not 
accomplish anything because it is a no-op according to the RFC. The UAS 
will just ignore the CANCEL request. After UAS starts sending 200 OK 
your only choice is to send ACK and BYE, or not to send anything and let 
the INVITE transaction timeout in the UAS.

I have another proposal/question. If the proxy receives CANCEL from the 
UAC before it received a provisional reply from the UAS, why not stop 
re-sending INVITEs and start sending CANCELs to the UAS? Yes, I know it 
is explicitly prohibited to do this in the RFC. But I do not understand 
the reason why. If the INVITE is lost and the UAS does not receive the 
INVITE and just receives CANCEL, it will just reply with 481 Transaction 
Does Not Exist. If the UAS received the INVITE, but the provisional 
response is lost then CANCEL will cancel the INVITE transaction. And 
this is exactly what we want.

Regards,
Anatoly.




More information about the Devel mailing list