[Serusers] [Serdev] [Tracker] Reopened: (SER-263) Using @select=~ "regexp" causes segmentation fault

samuel samu60 at gmail.com
Fri Jun 8 10:16:26 CEST 2007


IMHO,

I wouldn't "equalize" non-existent parameter with empty string. There are
header parameters (maddr,rport,isfocus) which may not have value and someone
(who knows?) might need to check for them. I would just not forbid this
option from the config file...

I would just use the @ and !@ uses for detecting presence or absence of
attributes and letting the == to check for the value once you know it
exists. It "complicates" a little bit config file but makes it clearer and I
think easier to debug.

So, for me it's fine changing example config files and documenting it.

my 0.02,
Samuel

2007/6/8, Michal Matyska <michal at iptel.org>:
>
> Samuel,
>
> yes it is related to. The resolution of SER-263 was wrong and every test
> like   if (@select=="")  has returned false, even the return value of
> the select was empty string.
>
> But, there is another problem I see in the config (including the example
> script)...
>
> There is difference between the (@select) test and (@select!="") one.
> The latter returns false, if the select framework returns N/A value
> (e.g. non present header/parameter).
>
> Intended behaviour was: @X is @route[1].params.lr in this example
> (as the tag must have value if present rfc3261 19.3)
>
> lr parameter    test    result
> not present     @X      false
>                 !@X     true
>                 @X==""  FALSE*
>                 @X!=""  FALSE*
>
>
> lr              @X      true
>                 !@X     false
>                 @X==""  true
>                 @X!=""  false
>
> lr=123          @X      true
>                 !@X     false
>                 @X==""  false
>                 @X!=""  true
>
>
> As I see the from the example ser.cfg, the tests are done in the
> (@to.tag=="") way, which won't work if the to.tag would return either
> N/A or the tag value. But it seems it returns the empty string even if
> not present, because it was previously working.
>
> So I ask the community (especially TB potential members) do we want to
> take care about the select N/A value differently, or shall we make it
> equal to empty string?
>
> Note, that if the answer is yes, it will be very hard to differentiate
> between parameter not present and parameter without value - well the lr
> parameter is handled internally, but what others?
>
> If the anwser is no, keep special N/A value handling, the select must be
> reviewed together with the ser.cfg, because (@to.tag=="") will be false
> for every tag (because it must have value).
>
> Michal
>
> On Čt, 2007-06-07 at 13:56 +0200, samuel wrote:
> > Michal,
> >
> > I've just post a question to users' list about not properly detecting
> > @to.tag=="".
> >
> > Is this bug related to it??
> >
> > Thanks,
> > Samuel.
> >
> > 2007/6/7, Michal Matyska (JIRA) < tracker at iptel.org>:
> >              [ http://tracker.iptel.org/browse/SER-263?page=all ]
> >
> >         Michal Matyska reopened SER-263:
> >         --------------------------------
> >
> >
> >         The way it is now resolved is wrong. If the select returns
> >         empty string the script test if (@select=="")  is false.
> >
> >         > Using @select=~ "regexp" causes segmentation fault
> >         > --------------------------------------------------
> >         >
> >         >                 Key: SER-263
> >         >                 URL: http://tracker.iptel.org/browse/SER-263
> >         >             Project: SER
> >         >          Issue Type: Bug
> >         >          Components: core, Selects
> >         >    Affects Versions: 2.0, Ipteldorf
> >         >         Environment: CVS head
> >         >            Reporter: Michal Matyska
> >         >         Assigned To: Michal Matyska
> >         >            Priority: Minor
> >         >             Fix For: 2.0, Ipteldorf
> >         >
> >         >
> >         > If the result of the select is empty string or it is
> >         STR_STATIC_INIT ( e.g. @uri.type) the prepatation of left
> >         operand (putting \0 behind the string) causes segmentation
> >         fault .
> >         > Program received signal SIGSEGV, Segmentation fault.
> >         > comp_str (op=11, left=0xbfad27a4, rtype=5, r=0x81932b0,
> >         msg=0x81a1034) at route.c:668
> >         > 668                             left->s[left->len]='\0';
> >
> >         --
> >         This message is automatically generated by JIRA.
> >         -
> >         If you think it was sent incorrectly contact one of the
> >         administrators:
> >         http://tracker.iptel.org/secure/Administrators.jspa
> >         -
> >         For more information on JIRA, see:
> >         http://www.atlassian.com/software/jira
> >
> >
> >         _______________________________________________
> >         Serdev mailing list
> >         Serdev at lists.iptel.org
> >         http://lists.iptel.org/mailman/listinfo/serdev
> >
> > _______________________________________________
> > Serdev mailing list
> > Serdev at lists.iptel.org
> > http://lists.iptel.org/mailman/listinfo/serdev
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.sip-router.org/pipermail/sr-users/attachments/20070608/1af0a516/attachment.htm>


More information about the sr-users mailing list