X-Git-Url: http://dxcluster.org/gitweb/gitweb.cgi?a=blobdiff_plain;f=perl%2FMsg.pm;h=aa9993e7ff966bf2b15ae5d3dc9782e96a421271;hb=f47c97d80722ed7d1881afa7caa0e8d24b6b0a75;hp=a8a1766ba150f92760d586904a2da9cb1bcf639c;hpb=b43b533709ed2bb51df19b5aebe3c668a9986cce;p=spider.git diff --git a/perl/Msg.pm b/perl/Msg.pm index a8a1766b..aa9993e7 100644 --- a/perl/Msg.pm +++ b/perl/Msg.pm @@ -253,17 +253,15 @@ sub disconnect { my $conn = shift; my $count = $conn->{disconnecting}++; - if ($count > 2) { - if (isdbg('connll')) { - my ($pkg, $fn, $line) = caller; - dbg((ref $conn) . "::disconnect on call $conn->{call} attempt $conn->{disconnecting} called from ${pkg}::${fn} line $line FORCING CLOSE "); - } + my $dbg = isdbg('connll'); + my ($pkg, $fn, $line) = caller if $dbg; + + if ($count >= 2) { + dbg((ref $conn) . "::disconnect on call $conn->{call} attempt $conn->{disconnecting} called from ${pkg}::${fn} line $line FORCING CLOSE ") if $dbg; _close_it($conn); + return; } - if (isdbg('connll')) { - my ($pkg, $fn, $line) = caller; - dbg((ref $conn) . "::disconnect on call $conn->{call} attempt $conn->{disconnecting} called from ${pkg}::${fn} line $line "); - } + dbg((ref $conn) . "::disconnect on call $conn->{call} attempt $conn->{disconnecting} called from ${pkg}::${fn} line $line ") if $dbg; return if $count; # remove this conn from the active queue @@ -285,25 +283,9 @@ sub disconnect my $ref = $conns{$call}; delete $conns{$call} if $ref && $ref == $conn; } - - $conn->{delay} = Mojo::IOLoop->delay ( -# Mojo::IOLoop->delay ( - sub { - my $delay = shift; - dbg("before drain $call"); - $sock->on(drain => $delay->begin); - 1; - }, - sub { - my $delay = shift; - _close_it($conn); - 1; - } - ); - $conn->{delay}->wait; - + _close_it($conn); } else { - dbg((ref $conn) . " socket missing on $conn->{call}") if isdbg('connll'); + dbg((ref $conn) . " socket missing on $conn->{call}") if $dbg; _close_it($conn); } } @@ -498,9 +480,11 @@ sub new_client { $sock->on(read => sub {$conn->_rcv($_[1])}); $sock->timeout(0); $sock->start; - dbg((ref $conn) . "accept $conn->{cnum} from $conn->{peerhost} $conn->{peerport}") if isdbg('connll'); - - my ($rproc, $eproc) = &{$server_conn->{rproc}} ($conn, $conn->{peerhost} = $handle->peerhost, $conn->{peerport} = $handle->peerport); + $conn->{peerhost} = $handle->peerhost; + $conn->{peerhost} =~ s|^::ffff:||; # chop off leading pseudo IPV6 stuff on dual stack listeners + $conn->{peerport} = $handle->peerport; + dbg((ref $conn) . " accept $conn->{cnum} from $conn->{peerhost}:$conn->{peerport}") if isdbg('connll'); + my ($rproc, $eproc) = &{$server_conn->{rproc}} ($conn, $conn->{peerhost}, $conn->{peerport}); $conn->{sort} = 'Incoming'; if ($eproc) { $conn->{eproc} = $eproc;