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(a)lists.sip-router.org
http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users