try harder to get clean disconnects
[spider.git] / perl / Msg.pm
index bad84a2c4f2277d7b117999f5fbe7e55e6aa9a16..df4edd3606f0d90ae1faaf3bf07415e2ed50d558 100644 (file)
@@ -136,8 +136,8 @@ sub _on_connect
        undef $conn->{sock};
        my $sock = $conn->{sock} = Mojo::IOLoop::Stream->new($handle);
        $sock->on(read => sub {$conn->_rcv($_[1]);} );
-       $sock->on(error => sub {$conn->disconnect;});
-       $sock->on(close => sub {$conn->disconnect;});
+       $sock->on(error => sub {delete $conn->{sock}; $conn->disconnect;});
+       $sock->on(close => sub {delete $conn->{sock}; $conn->disconnect;});
        $sock->timeout(0);
        $sock->start;
        $conn->{peerhost} = eval { $handle->peerhost; };