[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 14 19:48:10 CET 2008
On Thursday 13 March 2008, Juha Heinanen wrote:
> Dan Pascu writes:
> > Do you have any suggestion how can this be at least addressed, if
> > not solved, using the current RFC framework?
>
> i haven't followed the proposed solutions in detail, but the solution
> does not need to be RFC complaint as long as it does not assume any
> changes in rfc complaint UAs.
I thought this through, and to be honest, I do not think this can be
solved without cooperation from the UAs. Even more it can't be solved
without adding something new to the current framework the RFC provides.
Consider the case where the caller sends the CANCEL and the callee at the
same time sends the 200 OK. They will intersect in the proxy, but when
the callee receives the CANCEL it'll ignore it under the current RFC
assumptions about the call setup, because once it has sent the 200 OK, it
considers the session as started. Even if the caller ignores the 200 OK
or use an ACK+BYE to end the session, the session is still established.
Unless something is changed in the equation there is no way for the
caller/proxy to indicate to the callee that it should stop because a
CANCEL was already received. This new thing, can be something that
changes the way processing is supposed to happen with the existing RFC
specifications. For example:
1. A CANCEL could be accepted by the callee even after a 200 OK, but
before the ACK and its meaning in this context would be that the call was
just CANCELED before having a chance to be fully set up and it should be
dropped.
2. Some new method like the proposed NACK, which could have the same
meaning.
Personally I would go with choice 1, as it diverges less from the current
specs and only extends the meaning of the CANCEL a bit, otherwise it has
the same effect as the 2nd which would require the addition of a new
method that is harder to get done.
But as you can see both need the cooperation of the UA. Otherwise we could
apply 1 right now in the proxy, but it would most likely be completely
ignored by all UAs out there.
--
Dan
More information about the Devel
mailing list