Erich E. Hoover : server: Return STATUS_CANT_WAIT/ WSAEWOULDBLOCK for non-overlapped SIO_ADDRESS_LIST_CHANGE requests on non-blocking sockets.
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(a)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(a)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 );
participants (1)
-
Alexandre Julliard