Hi,

I have the following standard scenario:
UAC ---> UAS: INVITE
UAS ---> UAC: 100 Trying
UAS ---> UAC: 180 Ringing
UAS ---> UAC: 200 OK (INVITE)
UAC ---> UAS: ACK
UAC ---> UAS: BYE [ immediately ]
UAS ---> UAC: 200 OK (BYE)

The ACK + BYE are both sent upon receiving the 200 response, in that order but without delay.

When sending the 200 OK the UAS starts a retransmission timer ( at intervals T1, 2*T1, ... etc up to T2, as per RFC3261) When sending the ACK the UAC starts a linger timer (64*T1), to catch any retransmitted 200 OKs and ACK them (also as per RFC3261)

At the UAS side, since the ACK is a new transaction with its own branch id, no matching server transaction is found but normally a matching dialog is found. The dialog then signals the INVITE servertransaction that an ACK was received, which stops the retransmission of the 2xx response

However, when the ACK is lost for some reason but the BYE is not, the dialog is terminated at the UAS side. Newly arriving ACKs no longer match any dialog, so the retransmission of the 2xx responses is never stopped and always continues until 64*T1 (10 retransmissions). Each 2xx triggers an ACK

My question is: how should this be handled? Should reception of a BYE abort retransmission of the 2xx, or should the dialog linger as long as the INVITE server transaction has not finished? RFC3261 recommends that the UAS responds to any remaining requests with a 487 Request terminated, but since it has already responded with 2xx I don't think it should change its mind for that one

Regards,

Jeroen
_______________________________________________
Sip-implementors mailing list
[email protected]
http://lists.cs.columbia.edu/mailman/listinfo/sip-implementors

Reply via email to