[SR-Dev] new operators & if($v) behaviour
Miklos Tirpak
miklos at iptel.org
Mon Apr 27 11:55:55 CEST 2009
Hi,
On 04/24/2009 06:44 PM, Juha Heinanen wrote:
> Miklos Tirpak writes:
>
> > Both of them would return false. Btw, I do not think that empty value is
> > allowed for to tag, it's a very rare case, and could be covered with
> > some explicit check.
>
> to me to tag was just an example of some variable.
>
> > We used to write this, but had lots of issues. The problem happens for
> > example with @contact.uri.user, when there is no contact header.
> > Unfortunately the select function can return and error instead of
> > success with "" value in this case. (The can be also revisited) And 'if
> > (@contact.uri.user == "")' would evaluate to false because the left had
> > side value does not exist, which is wrong.
>
> this is exactly my point. you have to first check if something exists
> before you start to compare its value to something.
Yes, this could work, but than we need two checks in most of the cases:
if (defined($v) && ($v != "")) {...}
This is more precise indeed, but the script writer should not forget the
extra checks.
Regarding SER selects, if we go for this solution, I think we should
revisit all the select functions. For example @foo.param.abcd should
return "" only if the 'abcd' parameter of header 'foo' exists, but it's
value is empty. Than we could simply check the existence of the parameter:
if (defined(@foo.param.abcd)) {...}
Miklos
>
> -- juha
More information about the sr-dev
mailing list