[SR-Users] Evaluate Perl Return Value in Routing Logic
Henning Westerholt
henning.westerholt at 1und1.de
Wed Aug 18 13:53:42 CEST 2010
On Tuesday 17 August 2010, Nicolas Rüger wrote:
> thanks for the help. Your idea kept me trying as the C-code shows that it
> should return the result from the PERL subroutine as you already mentioned
> in your answer.
>
> Two points I want to name here:
>
> 1)
>
> I'm still confused that the methods in perl/perlfunc.c are called
> "perl_exec1()" and "perl_exec2()" instead of "perl_exec" because that's
> the one for use in kamailio.cfg.
Hey Nicolas,
this is not defined in the C, but in the module interface. Take a look to the
perl.c:static cmd_export_t cmds[] variable.
> 2) More Important...
>
>
> I finally solved my issue by using a variable in kamailio.cfg:
>
>
> if (is_method("INVITE")) {
> $var(a) = perl_exec("my_perl_subroutine");
> if ($var(a) == -1){
> xlog("PERL returns -1 \n");
> }
> }
>
> That works!
>
> So is this behavior of kamailio.cfg a bug?
> It should at least be listed in the documentation cause it's really tricky.
>
>
> PLEASE NOTE:
>
> perl_exec("my_perl_subroutine") == -1 --> returns FALSE
>
> BUT
>
> $var(a) = perl_exec("my_perl_subroutine");
> $var(a) == -1 --> returns TRUE
This is indeed strange. I'd say that evaluating the return value of a function
is nothing that new, its has been a pretty long time there. Maybe the
comparison went somehow mad because of some typing issue? Another idea, have
you tried using the $rc PV, which also return the result of the last called
function?
Regards,
Henning
More information about the sr-users
mailing list