LP#1339190 use mux_connection to extract IP / port
authorBill Erickson <berick@esilibrary.com>
Tue, 19 Aug 2014 18:13:29 +0000 (14:13 -0400)
committerBill Erickson <berick@esilibrary.com>
Tue, 19 Aug 2014 18:13:29 +0000 (14:13 -0400)
$mux->{net_server} is no longer reliable within mux_input

Signed-off-by: Bill Erickson <berick@esilibrary.com>
SIPServer.pm

index b169de7..51e2254 100755 (executable)
@@ -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 );