On 12/13/11 1:25 PM, Juha Heinanen wrote:
Daniel-Constantin Mierla writes:

coding wise might not be a lot, thus I haven't analyzed all the cases
where functions are evaluated by return code, but it will impact and
break config file as it used to be so far, for example:

route[x] {
   return -1;
}

if(route(x)) will be true, since if(-1) is true in C
i meant get rid of C interpretation when if evaluates the condition,
i.e., do not covert condition to anything, but just test if condition is
<  0 for false and>  0 for true.
This is what happens actually:

if(route(x) == 1) is seen by interpreter as:

if(left_expression == 1)

then left_expression is evaluated as you say above:
- < 0 is false => this is 0 is C
- > 0 is true => this is 1 in C

Since left_expression can be complex (include sub expressions), there has to be propagation to false/true. For example you can have in the left expression (2<1) or variables with such values.

Anyhow, if you have some ideas, you can play with functions in lvalue.c, rvalue.c and action.c

Cheers,
Daniel

--
Daniel-Constantin Mierla -- http://www.asipto.com
http://linkedin.com/in/miconda -- http://twitter.com/miconda


_______________________________________________
SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list
sr-users@lists.sip-router.org
http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users

Reply via email to