From: "Erich E. Hoover" Subject: server: Return STATUS_CANT_WAIT/WSAEWOULDBLOCK for non-overlapped SIO_ADDRESS_LIST_CHANGE requests on non-blocking sockets. Message-Id: Date: Mon, 28 Sep 2015 11:11:36 -0600 Fixes Bug #38062 (several .NET applications crash). Sorry it's taken so long to send this in. From 6be6123439ce89d980efdf9f300c56257aa881a6 Mon Sep 17 00:00:00 2001 From: "Erich E. Hoover" Date: Fri, 20 Feb 2015 14:03:34 -0700 Subject: server: Return STATUS_CANT_WAIT/WSAEWOULDBLOCK for non-overlapped SIO_ADDRESS_LIST_CHANGE requests on non-blocking sockets. Signed-off-by: Erich E. Hoover --- server/sock.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/server/sock.c b/server/sock.c index 67d6416..1767dea 100644 --- a/server/sock.c +++ b/server/sock.c @@ -546,6 +546,11 @@ obj_handle_t sock_ioctl( struct fd *fd, ioctl_code_t code, const async_data_t *a switch(code) { case WS_SIO_ADDRESS_LIST_CHANGE: + if ((sock->state & FD_WINE_NONBLOCKING) && !blocking) + { + set_error( STATUS_CANT_WAIT ); + return 0; + } if (!(ifchange_q = sock_get_ifchange_q( sock ))) return 0; if (!(async = create_async( current, ifchange_q, async_data ))) return 0; if (blocking) wait_handle = alloc_handle( current->process, async, SYNCHRONIZE, 0 ); -- 1.9.1