LP#1339190 alternate connnection ID tracking; reap login proc kids user/berick/multiplex-plus-relais-plus-timeout
authorBill Erickson <berick@esilibrary.com>
Thu, 14 Aug 2014 20:04:31 +0000 (16:04 -0400)
committerBill Erickson <berick@esilibrary.com>
Thu, 14 Aug 2014 20:04:31 +0000 (16:04 -0400)
Signed-off-by: Bill Erickson <berick@esilibrary.com>
SIPServer.pm

index f0837d7..5dd402f 100755 (executable)
@@ -291,7 +291,10 @@ sub mux_input {
         $mself->{net_server}->{server}->{peerport}
     );
 
-    my $conn_id = "$peeraddr:$peerport";
+    my $conn_id = $mself->{conn_id};
+    if (!$conn_id) {
+        $mself->{conn_id} = $conn_id = "$peeraddr:$peerport\@" . time();
+    }
 
     # check for kids that went away
     REAPER();
@@ -403,6 +406,8 @@ sub mux_input {
 
         } else {
             push(@pending_connections, $pid);
+            $kid_hash{$pid} = 1;
+            $kid_count++;
         }
 
         # nothing else for the parent to do until login completes
@@ -459,12 +464,7 @@ sub mux_input {
 # client disconnected, remove the active connection
 sub mux_close {
     my ($self, $mux, $fh) = @_;
-    my ($peeraddr, $peerport) = (
-        $self->{net_server}->{server}->{peeraddr},
-        $self->{net_server}->{server}->{peerport}
-    );
-
-    my $conn_id = "$peeraddr:$peerport";
+    my $conn_id = $self->{conn_id};
 
     delete $active_connections{$conn_id};
     syslog("LOG_DEBUG", "multi: mux_close cleaning up child: $conn_id; ".