From 24b64534e592e47e5cac70e497a98c0ddbc3941b Mon Sep 17 00:00:00 2001 From: Alexandre Julliard Date: Mon, 4 Dec 2006 18:02:02 +0100 Subject: [PATCH] server: Explicitly shutdown destroyed sockets to force pending poll() calls to return. --- server/sock.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/server/sock.c b/server/sock.c index a98057f17f0..7c96f5fb573 100644 --- a/server/sock.c +++ b/server/sock.c @@ -583,7 +583,12 @@ static void sock_destroy( struct object *obj ) async_terminate_queue( &sock->write_q, STATUS_CANCELLED ); } if (sock->event) release_object( sock->event ); - if (sock->fd) release_object( sock->fd ); + if (sock->fd) + { + /* shut the socket down to force pending poll() calls in the client to return */ + shutdown( get_unix_fd(sock->fd), SHUT_RDWR ); + release_object( sock->fd ); + } } /* create a new and unconnected socket */