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

-- 
GMX DSL SOMMER-SPECIAL: Surf & Phone Flat 16.000 für nur 19,99 ¿/mtl.!*
http://portal.gmx.net/de/go/dsl

_______________________________________________
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