[SR-Users] Issue with app_perl - return value, logging and append_branch

Mark Boyce mark at darkorigins.com
Wed Apr 24 20:23:13 CEST 2013


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




More information about the sr-users mailing list