and fix it on Msg as well
authorminima <minima>
Fri, 30 Mar 2001 11:16:44 +0000 (11:16 +0000)
committerminima <minima>
Fri, 30 Mar 2001 11:16:44 +0000 (11:16 +0000)
perl/Msg.pm

index e167269363d6f674ac24a016ce2fbabea51a7c0b..1ed5377c20f890238aba810e798f4c54ec5bfeef 100644 (file)
@@ -391,22 +391,26 @@ FINISH:
 sub new_client {
        my $server_conn = shift;
     my $sock = $server_conn->{sock}->accept();
-    my $conn = $server_conn->new($server_conn->{rproc});
-       $conn->{sock} = $sock;
-    my ($rproc, $eproc) = &{$server_conn->{rproc}} ($conn, $conn->{peerhost} = $sock->peerhost(), $conn->{peerport} = $sock->peerport());
-       $conn->{sort} = 'Incoming';
-       if ($eproc) {
-               $conn->{eproc} = $eproc;
-        set_event_handler ($sock, error => $eproc);
+       if ($sock) {
+               my $conn = $server_conn->new($server_conn->{rproc});
+               $conn->{sock} = $sock;
+               my ($rproc, $eproc) = &{$server_conn->{rproc}} ($conn, $conn->{peerhost} = $sock->peerhost(), $conn->{peerport} = $sock->peerport());
+               $conn->{sort} = 'Incoming';
+               if ($eproc) {
+                       $conn->{eproc} = $eproc;
+                       set_event_handler ($sock, error => $eproc);
+               }
+               if ($rproc) {
+                       $conn->{rproc} = $rproc;
+                       my $callback = sub {$conn->_rcv};
+                       set_event_handler ($sock, read => $callback);
+               } else {  # Login failed
+                       &{$conn->{eproc}}($conn, undef) if exists $conn->{eproc};
+                       $conn->disconnect();
+               }
+       } else {
+               dbg('err', "Msg: error on accept ($!)");
        }
-    if ($rproc) {
-        $conn->{rproc} = $rproc;
-        my $callback = sub {$conn->_rcv};
-        set_event_handler ($sock, read => $callback);
-    } else {  # Login failed
-               &{$conn->{eproc}}($conn, undef) if exists $conn->{eproc};
-        $conn->disconnect();
-    }
 }
 
 sub close_server