Hello,
I am not an user of app_perl, but return code might be propagate to the config script. Kamialio configuration interpreter will exit if a config function returns 0. The same happens if you execute return(0) in route[PERL].
For the other issues, can you set debug=3 in your config and watch the logs to see if you can spot some useful message?
Cheers, Daniel
On 4/24/13 8:23 PM, Mark Boyce wrote:
Hi All
I may well be me missing something obvious but I have got three odd ones whilst trying to test app_perl module which I'd appreciate some assistance with.
Setup
Kamailio version : 4.0.0 (x86_64/linux) from Peter Dunkley's YUM Repository
Perl version : v5.10.1
OS version : CentOS release 6.4
Kamailio.cfg highlights;
loadmodule "app_perl.so" modparam("app_perl", "filename", "/tmp/test.pl") modparam("app_perl", "modpath", "/usr/lib64/kamailio/perl/")
# ** would someone like to add the app_ to 5.1 and 5.2 of the manuals please
request_route { . . route(PERL); . . }
route[PERL] { if ($rU=~"^124" && method=="INVITE") { xlog("L_INFO","perl: match $rm $ru from:$fu ($si:$sp) to:$tu rpid:$re\n"); if (perl_exec("testrouting")) { xlog("L_INFO","perl: true exit\n"); } else { xlog("L_INFO","perl: false exit\n"); } } }
/tmp/test.pl has the following in it ...
#!/usr/bin/perl
use Kamailio qw ( log ); use Kamailio::Constants; use Sys::Syslog qw( :DEFAULT setlogsock);
sub testrouting { setlogsock('unix'); openlog($0,'','user'); syslog('info', "PERL Kamailio - Log test"); closelog;
return 1;
}
There is no valid route for 124@ and the above works exactly as I'd expect;
-> Phone sends INVITE to 124 <- Proxy responds with AUTH Required -> Phone sends ACK -> Phone sends INVITE to 124 with AUTH -- SysLog gets a "PERL Kamailio - Log test" from perl script -- Kamailio log gets "perl: true exit" <- Proxy responds with "404 Not Found" -> Phone sends ACK
First problem is that if I swap the "return 1" in test.pl for "return 0" what I see is;
-> Phone sends INVITE to 124 <- Proxy responds with AUTH Required -> Phone sends ACK -> Phone sends INVITE to 124 with AUTH -- SysLog gets a "PERL Kamailio - Log test" from perl script -> Phone resends INVITE to 124 with AUTH -- SysLog gets a "PERL Kamailio - Log test" from perl script -> Phone resends INVITE to 124 with AUTH -- SysLog gets a "PERL Kamailio - Log test" from perl script -- I Hang Up Phone --> Phone send CANCEL --> Phone send CANCEL --> Phone send CANCEL
In this second test once perl_exec is called all routing seems to stop. There's nothing from the xlog to say if perl_exec returned true or false.
The second problem I have is when I add "Kamailio::log(L_INFO," line it never arrives in any of the logs
use Kamailio qw ( log ); use Kamailio::Constants; use Sys::Syslog qw( :DEFAULT setlogsock);
sub testrouting { setlogsock('unix'); openlog($0,'','user'); syslog('info', "PERL Kamailio - Log test"); closelog;
Kamailio::log(L_INFO, "PERL : testrouting\n"); return 1;
}
The third one is that I cannot get append_branch to do anything.
If I add to the perl script the lines;
my $m = shift; $m->rewrite_ruri("sip:anotheruser\@ourserver");
The call gets diverted as expected. However if I use append_branch;
$m->append_branch("sip:anotheruser@ourserver");
It has no effect at all.
That's as far as I have experimented with the module so I can't say if everything else is working as expected :-)
Anyone have any thoughts?
Cheers
Mark
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