Check the protocol of the client connection properly.
authordjfiander <djfiander>
Tue, 11 Mar 2008 21:32:54 +0000 (21:32 +0000)
committerdjfiander <djfiander>
Tue, 11 Mar 2008 21:32:54 +0000 (21:32 +0000)
SIPServer.pm
Sip/Configuration.pm

index 85d5b46..78791b0 100644 (file)
@@ -5,6 +5,7 @@ use warnings;
 use Exporter;
 use Sys::Syslog qw(syslog);
 use Net::Server::PreFork;
+use Net::Server::Proto;
 use IO::Socket::INET;
 use Socket;
 use Data::Dumper;              # For debugging
@@ -82,9 +83,8 @@ sub process_request {
 
     $self->{config} = $config;
 
-    $sockname = getsockname(STDIN);
-    ($port, $sockaddr) = sockaddr_in($sockname);
-    $sockaddr = inet_ntoa($sockaddr);
+    $sockaddr = $self->{server}->{sockaddr};
+    $port = $self->{server}->{sockport};
     $proto = $self->{server}->{client}->NS_proto();
 
     $self->{service} = $config->find_service($sockaddr, $port, $proto);
index 1d0aa4b..ad37380 100644 (file)
@@ -25,6 +25,7 @@ my $parser = new XML::Simple( KeyAttr   => { login => '+id',
                                             'login',
                                             'institution' ],
                              ValueAttr =>  { 'error-detect' => 'enabled',
+                                            'timeout' => 'value',
                                             'min_servers' => 'value',
                                             'max_servers' => 'value'} );
 
@@ -62,6 +63,12 @@ sub error_detect {
     return $self->{'error-detect'};
 }
 
+sub timeout {
+    my $self = shift;
+
+    return $self->{'timeout'}
+}
+
 sub accounts {
     my $self = shift;
 
@@ -72,6 +79,7 @@ sub find_service {
     my ($self, $sockaddr, $port, $proto) = @_;
     my $portstr;
 
+    $proto = lc($proto);
     foreach my $addr ('', '*:', "$sockaddr:") {
        $portstr = sprintf("%s%s/%s", $addr, $port, lc $proto);
        Sys::Syslog::syslog("LOG_DEBUG", "Configuration::find_service: Trying $portstr");