From fa3be7ae4d7d713c8f5807f86a6e036c0cf2938b Mon Sep 17 00:00:00 2001 From: Mike Rylander Date: Thu, 14 Aug 2014 13:22:16 -0400 Subject: [PATCH] Use connection-unique data for conn_id, instead of local memory address Signed-off-by: Mike Rylander --- SIPServer.pm | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/SIPServer.pm b/SIPServer.pm index 6aa38e7..db86454 100755 --- a/SIPServer.pm +++ b/SIPServer.pm @@ -243,7 +243,8 @@ sub check_pending_connections { eval $values->{$key}; # Data::Dumper->Dump string my $id = $VAR1->{id}; - $active_connections{$id}{net_server} = $VAR1->{net_server_parts}; + $active_connections{$id}{net_server}{$_} = $VAR1->{net_server_parts}{$_} + for (keys %{$VAR1->{net_server_parts}}); delete $active_connections{$id} unless $VAR1->{success}; # clean up --- @@ -274,7 +275,12 @@ sub mux_input { # clear read data from the mux string ref $$str_ref = ''; - my $conn_id = ''.$mux_fh; + my ($peeraddr, $peerport) = ( + $mself->{net_server}->{server}->{peeraddr}, + $mself->{net_server}->{server}->{peerport} + ); + + my $conn_id = "$peeraddr:$peerport"; # check for kids that went away REAPER(); @@ -303,7 +309,7 @@ sub mux_input { $port = $self->{server}->{sockport}; $proto = $self->{server}->{client}->NS_proto(); - syslog('LOG_INFO', "Inbound connection from $sockaddr on port $port and proto $proto"); + syslog('LOG_INFO', "Inbound connection from $peeraddr to $sockaddr on port $port and proto $proto"); $self->{service} = $config->find_service( $sockaddr, $port, $proto ); @@ -400,6 +406,8 @@ sub mux_input { if ($pid == 0) { # in kid + syslog("LOG_DEBUG", "multi: $conn_id to be processed by child $$"); + # build the connection we deleted after logging in $self->{ils}->use; # module name in the parent $self->{ils} = $self->{ils}->new($self->{institution}, $self->{account}, $self->{state}); -- 2.11.0