[OpenSIPS-Users] dlg_val before create_dialog

M S medeanwz at gmail.com
Wed Jan 8 17:16:32 UTC 2025


Thank you - which versions the fix is pushed to?
This change may break some configurations (anybody like me using dlg_val
before dialog creation) so it might be worth mentioning something about
this in release notes...

On Wed, Jan 8, 2025 at 5:58 PM Răzvan Crainea <razvan at opensips.org> wrote:

> I've just pushed a fix, thanks for helping us identify this issue.
>
> Best regards,
>
> Răzvan Crainea
> OpenSIPS Core Developer / SIPhub CTO
> http://www.opensips-solutions.com / https://www.siphub.com
>
> On 1/8/25 6:49 PM, Bogdan-Andrei Iancu wrote:
> > Hi,
> >
> > Thanks for the info, Razvan identified the issue - indeed, the
> > rtpproxy_offer() forces the dialog creation, without actually of any
> > need of it. He will push a fix on this within the next days.
> >
> > Best regards,
> >
> > Bogdan-Andrei Iancu
> >
> > OpenSIPS Founder and Developer
> >    https://www.opensips-solutions.com
> >    https://www.siphub.com
> >
> > On 17.12.2024 19:27, M S wrote:
> >> So I did that, and it is very strange:
> >>
> >>     if (is_method("INVITE") && !has_totag()) xlog("L_WARN", "$ci|
> >> route|$Ts:$Tsm|DLG_status3 $DLG_status");
> >>             if(!rtpproxy_offer("froc")) xlog("L_WARN", "$ci|route|$Ts:
> >> $Tsm|rtpproxy_offer failed for: $mb\n");
> >>     if (is_method("INVITE") && !has_totag()) xlog("L_WARN", "$ci|
> >> route|$Ts:$Tsm|DLG_status4 $DLG_status");
> >>
> >> 32ac0d41383090087a573dd766679bcc at 10.201.54.109:5060|route|
> >> 1734456172:140520|DLG_status3 <null>
> >> 32ac0d41383090087a573dd766679bcc at 10.201.54.109:5060|route|
> >> 1734456172:140879|DLG_status4 1
> >>
> >> But what does rtpproxy_offer has to do with dialog?
> >>
> >> On Tue, Dec 17, 2024 at 5:06 PM Bogdan-Andrei Iancu
> >> <bogdan at opensips.org> wrote:
> >>
> >>     That means some other script function created the dialog in
> >>     advance. you can find which one by adding something like this on
> >>     top of your request route:
> >>         script_trace( 1, "$rm from $si, dlg is $DLG_status", "dbg");
> >>
> >>     And see where the print changes from NULL to 1 ;)
> >>
> >>     Regards,
> >>
> >>     Bogdan-Andrei Iancu
> >>
> >>     OpenSIPS Founder and Developer
> >>        https://www.opensips-solutions.com
> >>        https://www.siphub.com
> >>
> >>     On 17.12.2024 17:58, M S wrote:
> >>>     Thank you for your answer. I tried that and it shows DLG_status
> >>>     1, which means the dialog is created but I definitely didn't
> >>>     create a dialog before that line. Also, the dialog is created
> >>>     further down with create_dialog("pPB") command because I see
> >>>     OPTIONS being sent to both caller and callee (pP working).
> >>>     Why would DLG_status print 1? I will try to print it at different
> >>>     lines of script to see where it changes... I have a t_newtran and
> >>>     some $acc_extra lines befores (other than some standard processing)
> >>>
> >>>     On Tue, Dec 17, 2024 at 4:39 PM Bogdan-Andrei Iancu
> >>>     <bogdan at opensips.org> wrote:
> >>>
> >>>         Hi,
> >>>
> >>>         Yes, the dlg_val assignment fails if there is no current
> >>>         dialog. Maybe
> >>>         the dialog is created (internally) by some other script
> >>>         function you are
> >>>         using. Try prinitng the $DLG_status before the assignment,
> >>>         just to see
> >>>         if there is a dialog or not
> >>>
> >>>         Regards,
> >>>
> >>>         Bogdan-Andrei Iancu
> >>>
> >>>         OpenSIPS Founder and Developer
> >>>         https://www.opensips-solutions.com
> >>>         https://www.siphub.com
> >>>
> >>>         On 17.12.2024 14:08, M S wrote:
> >>>         > Hi list,
> >>>         > I have a script like this:
> >>>         >
> >>>         > ..... some processing
> >>>         > if (is_method("INVITE") && !has_totag()) {
> >>>         >   $dlg_val(x)="y";
> >>>         > }
> >>>         > .... some processing
> >>>         > if (is_method("INVITE") && !has_totag()) {
> >>>         >     create_dialog("pPB")
> >>>         > }
> >>>         >
> >>>         > My first question is, why does this work?! documents say
> >>>         $dlg_val
> >>>         > cannot be used before dialog is created, and create_dialog
> >>>         is called
> >>>         > after dlg_val here.
> >>>         > I have verified that indeed dialog is created using
> >>>         create_dialog, and
> >>>         > indeed $dlg_val(x) stores the value (it is available later
> >>>         in the dialog).
> >>>         >
> >>>         > Second question, once or two times a day (after thousands
> >>>         of calls) I
> >>>         > see a do_assign setting PV failed error message on the
> >>>         $dlg_val(x)="y"
> >>>         > line. Since this shouldn't have worked to begin with, I
> >>>         don't know how
> >>>         > to debug this. Any suggestions?
> >>>         >
> >>>         > Thank you!
> >>>         >
> >>>         > _______________________________________________
> >>>         > Users mailing list
> >>>         > Users at lists.opensips.org
> >>>         > http://lists.opensips.org/cgi-bin/mailman/listinfo/users
> >>>
> >>
> >
> > Hi,
> >
> > Thanks for the info, Razvan identified the issue - indeed, the
> > rtpproxy_offer() forces the dialog creation, without actually of any
> > need of it. He will push a fix on this within the next days.
> >
> > Best regards,
> >
> > Bogdan-Andrei Iancu
> >
> > OpenSIPS Founder and Developer
> >    https://www.opensips-solutions.com
> >    https://www.siphub.com
> >
> > On 17.12.2024 19:27, M S wrote:
> >> So I did that, and it is very strange:
> >>
> >>     if (is_method("INVITE") && !has_totag()) xlog("L_WARN", "$ci|
> >> route|$Ts:$Tsm|DLG_status3 $DLG_status");
> >>             if(!rtpproxy_offer("froc")) xlog("L_WARN", "$ci|route|$Ts:
> >> $Tsm|rtpproxy_offer failed for: $mb\n");
> >>     if (is_method("INVITE") && !has_totag()) xlog("L_WARN", "$ci|
> >> route|$Ts:$Tsm|DLG_status4 $DLG_status");
> >>
> >> 32ac0d41383090087a573dd766679bcc at 10.201.54.109:5060|route|
> >> 1734456172:140520|DLG_status3 <null>
> >> 32ac0d41383090087a573dd766679bcc at 10.201.54.109:5060|route|
> >> 1734456172:140879|DLG_status4 1
> >>
> >> But what does rtpproxy_offer has to do with dialog?
> >>
> >> On Tue, Dec 17, 2024 at 5:06 PM Bogdan-Andrei Iancu
> >> <bogdan at opensips.org> wrote:
> >>
> >>     That means some other script function created the dialog in
> >>     advance. you can find which one by adding something like this on
> >>     top of your request route:
> >>         script_trace( 1, "$rm from $si, dlg is $DLG_status", "dbg");
> >>
> >>     And see where the print changes from NULL to 1 ;)
> >>
> >>     Regards,
> >>
> >>     Bogdan-Andrei Iancu
> >>
> >>     OpenSIPS Founder and Developer
> >>        https://www.opensips-solutions.com
> >>        https://www.siphub.com
> >>
> >>     On 17.12.2024 17:58, M S wrote:
> >>>     Thank you for your answer. I tried that and it shows DLG_status
> >>>     1, which means the dialog is created but I definitely didn't
> >>>     create a dialog before that line. Also, the dialog is created
> >>>     further down with create_dialog("pPB") command because I see
> >>>     OPTIONS being sent to both caller and callee (pP working).
> >>>     Why would DLG_status print 1? I will try to print it at different
> >>>     lines of script to see where it changes... I have a t_newtran and
> >>>     some $acc_extra lines befores (other than some standard processing)
> >>>
> >>>     On Tue, Dec 17, 2024 at 4:39 PM Bogdan-Andrei Iancu
> >>>     <bogdan at opensips.org> wrote:
> >>>
> >>>         Hi,
> >>>
> >>>         Yes, the dlg_val assignment fails if there is no current
> >>>         dialog. Maybe
> >>>         the dialog is created (internally) by some other script
> >>>         function you are
> >>>         using. Try prinitng the $DLG_status before the assignment,
> >>>         just to see
> >>>         if there is a dialog or not
> >>>
> >>>         Regards,
> >>>
> >>>         Bogdan-Andrei Iancu
> >>>
> >>>         OpenSIPS Founder and Developer
> >>>         https://www.opensips-solutions.com
> >>>         https://www.siphub.com
> >>>
> >>>         On 17.12.2024 14:08, M S wrote:
> >>>         > Hi list,
> >>>         > I have a script like this:
> >>>         >
> >>>         > ..... some processing
> >>>         > if (is_method("INVITE") && !has_totag()) {
> >>>         >   $dlg_val(x)="y";
> >>>         > }
> >>>         > .... some processing
> >>>         > if (is_method("INVITE") && !has_totag()) {
> >>>         >     create_dialog("pPB")
> >>>         > }
> >>>         >
> >>>         > My first question is, why does this work?! documents say
> >>>         $dlg_val
> >>>         > cannot be used before dialog is created, and create_dialog
> >>>         is called
> >>>         > after dlg_val here.
> >>>         > I have verified that indeed dialog is created using
> >>>         create_dialog, and
> >>>         > indeed $dlg_val(x) stores the value (it is available later
> >>>         in the dialog).
> >>>         >
> >>>         > Second question, once or two times a day (after thousands
> >>>         of calls) I
> >>>         > see a do_assign setting PV failed error message on the
> >>>         $dlg_val(x)="y"
> >>>         > line. Since this shouldn't have worked to begin with, I
> >>>         don't know how
> >>>         > to debug this. Any suggestions?
> >>>         >
> >>>         > Thank you!
> >>>         >
> >>>         > _______________________________________________
> >>>         > Users mailing list
> >>>         > Users at lists.opensips.org
> >>>         > http://lists.opensips.org/cgi-bin/mailman/listinfo/users
> >>>
> >>
> >
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.opensips.org/pipermail/users/attachments/20250108/54ccfe58/attachment-0001.html>


More information about the Users mailing list