Commit dfa73ca6 authored by Erich E. Hoover's avatar Erich E. Hoover Committed by Alexandre Julliard

server: Return STATUS_CANT_WAIT/WSAEWOULDBLOCK for non-overlapped…

server: Return STATUS_CANT_WAIT/WSAEWOULDBLOCK for non-overlapped SIO_ADDRESS_LIST_CHANGE requests on non-blocking sockets. Signed-off-by: 's avatarErich E. Hoover <erich.e.hoover@wine-staging.com>
parent 00d966cd
...@@ -546,6 +546,11 @@ obj_handle_t sock_ioctl( struct fd *fd, ioctl_code_t code, const async_data_t *a ...@@ -546,6 +546,11 @@ obj_handle_t sock_ioctl( struct fd *fd, ioctl_code_t code, const async_data_t *a
switch(code) switch(code)
{ {
case WS_SIO_ADDRESS_LIST_CHANGE: 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 (!(ifchange_q = sock_get_ifchange_q( sock ))) return 0;
if (!(async = create_async( current, ifchange_q, async_data ))) return 0; if (!(async = create_async( current, ifchange_q, async_data ))) return 0;
if (blocking) wait_handle = alloc_handle( current->process, async, SYNCHRONIZE, 0 ); if (blocking) wait_handle = alloc_handle( current->process, async, SYNCHRONIZE, 0 );
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment