[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