ws2_32: Clear FD_OOB instead of FD_READ when receiving OOB data.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
037fccc0df
commit
53210ceb0e
|
@ -2110,14 +2110,14 @@ static NTSTATUS WS2_async_recv( void *user, IO_STATUS_BLOCK *iosb, NTSTATUS stat
|
||||||
if (result >= 0)
|
if (result >= 0)
|
||||||
{
|
{
|
||||||
status = STATUS_SUCCESS;
|
status = STATUS_SUCCESS;
|
||||||
_enable_event( wsa->hSocket, FD_READ, 0, 0 );
|
_enable_event( wsa->hSocket, (wsa->flags & WS_MSG_OOB) ? FD_OOB : FD_READ, 0, 0 );
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (errno == EAGAIN)
|
if (errno == EAGAIN)
|
||||||
{
|
{
|
||||||
status = STATUS_PENDING;
|
status = STATUS_PENDING;
|
||||||
_enable_event( wsa->hSocket, FD_READ, 0, 0 );
|
_enable_event( wsa->hSocket, (wsa->flags & WS_MSG_OOB) ? FD_OOB : FD_READ, 0, 0 );
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -6180,7 +6180,7 @@ static int WS2_recv_base( SOCKET s, LPWSABUF lpBuffers, DWORD dwBufferCount,
|
||||||
}
|
}
|
||||||
else NtQueueApcThread( GetCurrentThread(), (PNTAPCFUNC)ws2_async_apc,
|
else NtQueueApcThread( GetCurrentThread(), (PNTAPCFUNC)ws2_async_apc,
|
||||||
(ULONG_PTR)wsa, (ULONG_PTR)iosb, 0 );
|
(ULONG_PTR)wsa, (ULONG_PTR)iosb, 0 );
|
||||||
_enable_event(SOCKET2HANDLE(s), FD_READ, 0, 0);
|
_enable_event(SOCKET2HANDLE(s), (wsa->flags & WS_MSG_OOB) ? FD_OOB : FD_READ, 0, 0);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -6209,13 +6209,13 @@ static int WS2_recv_base( SOCKET s, LPWSABUF lpBuffers, DWORD dwBufferCount,
|
||||||
{
|
{
|
||||||
err = WSAETIMEDOUT;
|
err = WSAETIMEDOUT;
|
||||||
/* a timeout is not fatal */
|
/* a timeout is not fatal */
|
||||||
_enable_event(SOCKET2HANDLE(s), FD_READ, 0, 0);
|
_enable_event(SOCKET2HANDLE(s), (wsa->flags & WS_MSG_OOB) ? FD_OOB : FD_READ, 0, 0);
|
||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
_enable_event(SOCKET2HANDLE(s), FD_READ, 0, 0);
|
_enable_event(SOCKET2HANDLE(s), (wsa->flags & WS_MSG_OOB) ? FD_OOB : FD_READ, 0, 0);
|
||||||
err = WSAEWOULDBLOCK;
|
err = WSAEWOULDBLOCK;
|
||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
|
@ -6224,7 +6224,7 @@ static int WS2_recv_base( SOCKET s, LPWSABUF lpBuffers, DWORD dwBufferCount,
|
||||||
TRACE(" -> %i bytes\n", n);
|
TRACE(" -> %i bytes\n", n);
|
||||||
if (wsa != &localwsa) HeapFree( GetProcessHeap(), 0, wsa );
|
if (wsa != &localwsa) HeapFree( GetProcessHeap(), 0, wsa );
|
||||||
release_sock_fd( s, fd );
|
release_sock_fd( s, fd );
|
||||||
_enable_event(SOCKET2HANDLE(s), FD_READ, 0, 0);
|
_enable_event(SOCKET2HANDLE(s), (wsa->flags & WS_MSG_OOB) ? FD_OOB : FD_READ, 0, 0);
|
||||||
SetLastError(ERROR_SUCCESS);
|
SetLastError(ERROR_SUCCESS);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
@ -4413,7 +4413,7 @@ static void test_oob_events(struct event_test_ctx *ctx)
|
||||||
ret = recv(server, buffer, 1, MSG_OOB);
|
ret = recv(server, buffer, 1, MSG_OOB);
|
||||||
ok(ret == 1, "got %d\n", ret);
|
ok(ret == 1, "got %d\n", ret);
|
||||||
|
|
||||||
check_events_todo_msg(ctx, FD_OOB, 0, 200);
|
check_events_todo(ctx, FD_OOB, 0, 200);
|
||||||
check_events_todo_msg(ctx, 0, 0, 0);
|
check_events_todo_msg(ctx, 0, 0, 0);
|
||||||
|
|
||||||
ret = recv(server, buffer, 1, MSG_OOB);
|
ret = recv(server, buffer, 1, MSG_OOB);
|
||||||
|
|
Loading…
Reference in New Issue