From: djfiander Date: Tue, 11 Mar 2008 21:32:54 +0000 (+0000) Subject: Check the protocol of the client connection properly. X-Git-Url: https://old-git.evergreen-ils.org/?a=commitdiff_plain;h=d6b46acfe5a5c2cae7aea3162b0ff48042f28013;p=SIPServer.git Check the protocol of the client connection properly. --- diff --git a/SIPServer.pm b/SIPServer.pm index 85d5b46..78791b0 100644 --- a/SIPServer.pm +++ b/SIPServer.pm @@ -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); diff --git a/Sip/Configuration.pm b/Sip/Configuration.pm index 1d0aa4b..ad37380 100644 --- a/Sip/Configuration.pm +++ b/Sip/Configuration.pm @@ -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");