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>
This commit is contained in:
Erich E. Hoover 2015-02-20 14:03:34 -07:00 committed by Alexandre Julliard
parent 00d966cd3a
commit dfa73ca626
1 changed files with 5 additions and 0 deletions

View File

@ -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 );