[SR-Users] About avp's, var's, null, 0 and empty string

Iñaki Baz Castillo ibc at aliax.net
Wed Sep 15 16:43:34 CEST 2010


Hi, I would like to summarize how $avp's and $var's handle the null
value, 0 and empty string. For this I've writen the following test
I've checked in Kamailio 1.5.4:

--------------------------
   $var(null) = null;
   $avp(s:null) = null;
   $var(empty) = "";
   $avp(s:empty) = "";

   xlog("var(null): '$var(null)'\n");
   if $var(null) == null
     xlog("*** if var(null) == null \n");
   if $var(null)
     xlog("*** if var(null) \n");
   if $var(null) != null
     xlog("*** if var(null) != null \n");
   if ! $var(null)
     xlog("*** if ! var(null) \n");
   if $var(null) == ''
     xlog("*** if var(null) == '' \n");
   if $var(null) == 0
     xlog("*** if var(null) == 0 \n");

   xlog("\n");
   xlog("avp(s:null): '$avp(s:null)'\n");
   if $avp(s:null) == null
     xlog("*** if avp(s:null) == null \n");
   if $avp(s:null)
     xlog("*** if avp(s:null) \n");
   if $avp(s:null) != null
     xlog("*** if avp(s:null) != null \n");
   if ! $avp(s:null)
     xlog("*** if ! avp(s:null) \n");
   if $avp(s:null) == ''
     xlog("*** if avp(s:null) == '' \n");
   if $avp(s:null) == 0
     xlog("*** if avp(s:null) == 0 \n");

   xlog("\n");
   xlog("var(empty): '$var(empty)'\n");
   if $var(empty) == null
     xlog("*** if var(empty) == null \n");
   if $var(empty)
     xlog("*** if var(empty) \n");
   if $var(empty) != null
     xlog("*** if var(empty) != null \n");
   if ! $var(empty)
     xlog("*** if ! var(empty) \n");
   if $var(empty) == ''
     xlog("*** if var(empty) == '' \n");
   if $var(empty)== 0
     xlog("*** if var(empty) == 0 \n");

   xlog("\n");
   xlog("avp(s:empty): '$avp(s:empty)' \n");
   if $avp(s:empty) == null
     xlog("*** if avp(s:empty) == null \n");
   if $avp(s:empty)
     xlog("*** if avp(s:empty) \n");
   if $avp(s:empty) != null
     xlog("*** if avp(s:empty) != null \n");
   if ! $avp(s:empty)
     xlog("*** if ! avp(s:empty) \n");
   if $avp(s:empty) == ''
     xlog("*** if avp(s:empty) == '' \n");
   if $avp(s:empty) == 0
     xlog("*** if avp(s:empty) == 0 \n");
-------------------------


The result is:

-------------------------
var(null): '0'
*** if var(null) != null
*** if ! var(null)
*** if var(null) == 0

avp(s:null): '<null>'
*** if avp(s:null) == null
*** if ! avp(s:null)

var(empty): ''
*** if var(empty) != null
*** if ! var(empty)
*** if var(empty) == ''
CRITICAL:core:comp_scriptvar: invalid operation 20/3/4!!
WARNING:core:do_action: error in expression (l=356)

avp(s:empty): ''
*** if avp(s:empty) != null
*** if ! avp(s:empty)
*** if avp(s:empty) == ''
CRITICAL:core:comp_scriptvar: invalid operation 20/3/4!!
WARNING:core:do_action: error in expression (l=372)
-------------------------


Conclusions:

- $var cannot store null value. If so it converts it to 0.

- When cheking "if $avp(...) {"  the result is false in case the
content of the $avp is null, 0 or an empty string.

- When cheking "if $var(...) {"  the result is false in case the
content of the $var is  0 or an empty string.


Any thoughts on this?
Regards.



--
Iñaki Baz Castillo
<ibc at aliax.net>



More information about the sr-users mailing list