Erich E. Hoover : server: Return STATUS_CANT_WAIT/ WSAEWOULDBLOCK for non-overlapped SIO_ADDRESS_LIST_CHANGE requests on non-blocking sockets.
Alexandre Julliard
julliard at wine.codeweavers.com
Fri Oct 2 09:21:49 CDT 2015
Module: wine
Branch: master
Commit: dfa73ca62678787400a27eb0d858a402aae37c47
URL: http://source.winehq.org/git/wine.git/?a=commit;h=dfa73ca62678787400a27eb0d858a402aae37c47
Author: Erich E. Hoover <erich.e.hoover at 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 at 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 );
More information about the wine-cvs
mailing list