From 0898b2d19be709627e4106f5bc877a48d9350359 Mon Sep 17 00:00:00 2001 From: Bill Erickson Date: Tue, 19 Aug 2014 14:13:29 -0400 Subject: [PATCH] LP#1339190 use mux_connection to extract IP / port $mux->{net_server} is no longer reliable within mux_input Signed-off-by: Bill Erickson --- SIPServer.pm | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/SIPServer.pm b/SIPServer.pm index b169de7..51e2254 100755 --- a/SIPServer.pm +++ b/SIPServer.pm @@ -291,24 +291,26 @@ sub sig_chld { } } -sub mux_input { - my $mself = shift; - my $mux = shift; - my $mux_fh = shift; - my $str_ref = shift; +sub mux_connection { + my ($mself, $fh) = @_; my ($peeraddr, $peerport) = ( $mself->{net_server}->{server}->{peeraddr}, $mself->{net_server}->{server}->{peerport} ); - my $conn_id = $mself->{conn_id}; - if (!$conn_id) { - $mself->{conn_id} = $conn_id = "$peeraddr:$peerport\@" . time(); - syslog('LOG_DEBUG', "Created new connection: $conn_id"); - } else { - syslog('LOG_DEBUG', "Inbound msg on existing connection: $conn_id"); - } + # create a new connection ID for this MUX handler. + $mself->{conn_id} = "$peeraddr:$peerport\@" . time(); + syslog('LOG_DEBUG', "New connection created: ".$mself->{conn_id}); +} + +sub mux_input { + my $mself = shift; + my $mux = shift; + my $mux_fh = shift; + my $str_ref = shift; + + my $conn_id = $mself->{conn_id}; # see mux_connection # and process any pending logins check_pending_connections(); @@ -334,7 +336,7 @@ sub mux_input { $port = $self->{server}->{sockport}; $proto = $self->{server}->{client}->NS_proto(); - syslog('LOG_INFO', "Inbound connection from $peeraddr to $sockaddr on port $port and proto $proto"); + syslog('LOG_INFO', "New client $conn_id connecting to $sockaddr on port $port and proto $proto"); $self->{service} = $config->find_service( $sockaddr, $port, $proto ); -- 2.11.0