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

Iñaki Baz Castillo ibc at aliax.net
Wed Sep 15 15:57:40 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