[OpenSER-Users] Openser-Perl module in onreply_route

Mik Cheez michael_bulk at wildgate.com
Fri Oct 12 18:13:52 CEST 2007


I had been using 'perl_exec' in my scripts with great success until I 
decided to try using it in the onreply_route.  The strangest thing now 
happens; I use my perl script to write information to a database, and it 
seems like the failure would have to be in DBI, but it only occurs in 
Openser.  I execute a stored procedure, and instead of doing this:

   exec procedurename @arg1 = '{sip status}', @arg2 = '{callid}'

The procedure is called like this:

   declare @arg2 numeric({string length})
   exec procedurename @arg1 = '{sip status}', @arg2 = '{callid}' output

I have no idea where the thing is declaring @arg2 as an output variable. 
  I can run my script manually forever and never get this message, but 
it happens about 50% of the time in Openser (i.e. half the time it works 
perfectly, without creating the output variable).  I would try to run it 
somewhere else in my openser script, but the sip status isn't available 
in the request context (where I run similar scripts without any 
problems).  The procedure is not supposed to return anything.

Here's the function I created:

*****
*****
use strict;
use DBI;
use DBI qw(:sql_types);
use OpenSER qw ( log );
use OpenSER::Constants;
use OpenSER::Message;

sub proxy_onreply {
         my $m = shift;

         my $status;
         my $callid;

         my $sth;
         my $dbh;
         my $query;

         $status = $m->getStatus();
         $callid = $m->pseudoVar("\$ci");

        $dbh = DBI->connect("dbi:Sybase") || die "Database connection 
not made: $DBI::errstr";

        $query = "exec procedurename \@arg1 = ?, \@arg1 = ?";
        $sth = $dbh->prepare($query);
        $sth->bind_param(1, $status, SQL_VARCHAR);
        $sth->bind_param(2, $callid, SQL_VARCHAR);

        $sth->execute;

        $sth->finish;
        $dbh->disconnect();
}
*****
*****

Any suggestions would be lovely.

Best regards,

Mik




More information about the Users mailing list