[OpenSIPS-Users] terminating early dialogs with BYE

Bogdan-Andrei Iancu bogdan at voice-system.ro
Tue Dec 21 14:45:50 CET 2010


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 
> <bogdan at voice-system.ro> 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
>> Users at lists.opensips.org
>> 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




More information about the Users mailing list