diff --git a/circuits/net/sockets.py b/circuits/net/sockets.py index 449d2b9bc..c7a34b75e 100644 --- a/circuits/net/sockets.py +++ b/circuits/net/sockets.py @@ -633,7 +633,14 @@ def _on_accept_done(self, sock, fire_connect_event=True): self._poller.addReader(self, sock) self._clients.append(sock) if fire_connect_event: - self.fire(connect(sock, *sock.getpeername())) + try: + self.fire(connect(sock, *sock.getpeername())) + except SocketError as exc: + if exc.args[0] in (ENOTCONN,): + # the client already disconnected + self._close(sock) + return + raise def _on_handshake_error(self, sock, err): self.fire(error(sock, err))