Hi Taisto,

I agree on what you said, still from a dialog point of view , in early state, CANCEL and BYE are parallel transaction that do not directly terminate the INVITE on proxy, but they are handled by end clients which is responsible the rejecting the INVITE due when receiving CANCEL/BYE in early state.

Regards,
Bogdan

Taisto Qvist (WM) wrote:
I stumbled onto a "problem" with BYE in early dialog last week,
during forking, but its not an core opensips issue.

Since my OpenSIPs setup is dialog-agnostic, any client that sends
BYE in an early dialog, will only manage to trigger the UAS to
send a 487 or simlar to the specific INVITE transaction.

A transaction stateful, forking proxy, wether working in parallell
or serial, has no way of matching the BYE to the other transactions,
so any other parallell branches will "keep going" just as normal,
possibly returning a 2xx response.

In a serial forking case, the proxy will just "rollOver" to the next
branch, which in turn could complete the call with a 2xx.

So the BYE from the client results in very different behavior than
a CANCEL which i *assume* is the expected behavior.

UACs should use CANCEL if they want to terminate the *session* and
BYE if they want to terminate a *specific* early dialog.

I've never worked with the dialog-module but I assume that if you
wanted to handle this case "as if it was cancel", you would in some
way have to find the unfinished invite transaction, and generate cancel
on it.

A ::cancelMatchingInvite(SIP_ByeRequest *) sortof...

Regards
Taisto


On Wed, 08 Dec 2010 12:04:57 +0200, Bogdan-Andrei Iancu <[email protected]> wrote:
Hi Andrew,

Do you refer to the dialog module not terminating an early dialog if
a bye is received ?

I know the RFC allows it, but never be able to actually test with
something like that. On the other hand, I do not think we need to do
anything special to support BYE in early state. In such a case, even
if the dialog state machine will not be triggered by the BYE request,
the BYE will get to the callee and callee will terminate the INVITE
transaction with a negative reply (like 487 when cancelling)...So, the
failed INVITE transaction will trigger the dialog termination..

Or maybe I fail to understand how this BYE for early dialogs
works....Can you reproduce this scenario ?

Regards,
Bogdan

Andrew Pogrebennyk wrote:
Hi,
RFC3261 paragraph 15 Terminating a Session says:
   When a BYE is received on a dialog, any session
   associated with that dialog SHOULD terminate.  A UA MUST NOT send a
   BYE outside of a dialog.  The caller's UA MAY send a BYE for either
   confirmed or early dialogs, and the callee's UA MAY send a BYE on
   confirmed dialogs, but MUST NOT send a BYE on early dialogs.
However early dialog termination with BYE appears to be not supported in OpenSIPS. If there any known solution to that?

_______________________________________________
Users mailing list
[email protected]
http://lists.opensips.org/cgi-bin/mailman/listinfo/users



--
Bogdan-Andrei Iancu
OpenSIPS Event - expo, conf, social, bootcamp
2 - 4 February 2011, ITExpo, Miami,  USA
www.voice-system.ro


_______________________________________________
Users mailing list
[email protected]
http://lists.opensips.org/cgi-bin/mailman/listinfo/users

Reply via email to