Module: wine Branch: master Commit: dfa73ca62678787400a27eb0d858a402aae37c47 URL: http://source.winehq.org/git/wine.git/?a=commit;h=dfa73ca62678787400a27eb0d8...
Author: Erich E. Hoover erich.e.hoover@wine-staging.com Date: Fri Feb 20 14:03:34 2015 -0700
server: Return STATUS_CANT_WAIT/WSAEWOULDBLOCK for non-overlapped SIO_ADDRESS_LIST_CHANGE requests on non-blocking sockets.
Signed-off-by: Erich E. Hoover erich.e.hoover@wine-staging.com
---
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 );