[OpenSER-Devel] [Serdev] Possible bug in the tm module in the presence of packet loss/branches
Dan Pascu
dan at ag-projects.com
Fri Mar 7 12:42:31 CET 2008
On Friday 07 March 2008, Maxim Sobolev wrote:
> Klaus Darilion wrote:
> >> The correct behavior of the tm module in this case would be to
> >> continue with INVITE re-transmits until we get provisional response
> >> and immediate CANCEL once that response comes in.
> >
> > Is this really the correct behavior? Is this behavior defined in RFC
> > 3261?
>
> --- RFC 3261 ---
> Once the CANCEL is constructed, the client SHOULD check whether it
> has received any response (provisional or final) for the request
> being cancelled (herein referred to as the "original request").
>
> If no provisional response has been received, the CANCEL request
> MUST NOT be sent; rather, the client MUST wait for the arrival of a
> provisional response before sending the request.
> --- RFC 3261 ---
>
> According to my reading yes, UAC should wait either arrival of the
> first provisional response or expiration of Timer B (doing due
> retransmits in the meantime for unreliable transports) and send CANCEL
> if provisional reply comes in.
In the paragraph quoted above I do not see any reference to TimerB or to
keep retransmitting the initial INVITE on a branch that did not send a
provisional reply, even after the caller has canceled the call. The only
thing I read in there is that if a branch has not sent a provisional
reply until the branch is about to be canceled, either because other
branch has picked up the call or because the caller has canceled the call
himself, then a CANCEL should not be transmitted on the branch without a
provisional reply. This behavior is already honored by openser, AFAIK.
--
Dan
More information about the Devel
mailing list