[OpenSIPS-Users] terminating early dialogs with BYE

Taisto Qvist (WM) taisto.qvist at ip-solutions.se
Wed Dec 8 11:18:14 CET 2010


 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

-- 
 Taisto Qvist, IP-Solutions
 Mobile: +46-708-88 02 63
 "We are Pentium of Borg. Division is futile, You will be approximated"



More information about the Users mailing list