From: Bill Erickson Date: Thu, 14 Aug 2014 20:04:31 +0000 (-0400) Subject: LP#1339190 alternate connnection ID tracking; reap login proc kids X-Git-Url: https://old-git.evergreen-ils.org/?a=commitdiff_plain;h=refs%2Fheads%2Fuser%2Fberick%2Fmultiplex-plus-relais-plus-timeout;p=working%2FSIPServer.git LP#1339190 alternate connnection ID tracking; reap login proc kids Signed-off-by: Bill Erickson --- diff --git a/SIPServer.pm b/SIPServer.pm index f0837d7..5dd402f 100755 --- a/SIPServer.pm +++ b/SIPServer.pm @@ -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; ".