Hello Henning,
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.
I grepped the whole kamailio source code and couldn't find a definition of "perl_exec".
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
In this example the perl-subroutine itself returns -1
Thank you Henning!
Regards,
Nicolas
On Tuesday 17 August 2010, Nicolas Rüger wrote:
is there any way to use or evaluate the return-statements of a
perl-script
in kamailio.cfg?
I tried the following in the Routing Logic in kamailio.cfg:
if (is_method("INVITE")) { if (perl_exec("my_perl_subroutine") == -1){ xlog("PERL returns -1 \n"); } }
Doesn't work.
The bad thing is that the return-values of the - perl_exec("XXX") - call are not the same that the perl subroutine "XXX" returns.
That's at least what I strongly believe after testing.
I do need to read/evaluate the return-value of the perl-subroutine in
the
Routing Logic to define different routes depending on what the perl-subroutine returns.
Is there any way to do that???
Hi Nicolas,
i just checked in the code of perl/perlfunc.c:perl_exec2(..) in the module, it seems that it according to the code it should return the result from the perl method, or -1 on internal error or wrong parameter before execution.
If this not work, then its probably a bug in the module. Maybe you can add some debugging information into this code statement to help with your tests.
Another idea, if you don't like to digg in the code, for returning some data from perl to the script would be to use OpenSER::AVP and fill the return value (maybe with some wrapper) in an AVP which you then read out later.
Cheers,
Henning
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