Signed-off-by: Zebediah Figura z.figura12@gmail.com --- dlls/ntdll/unix/socket.c | 1 + server/protocol.def | 1 + server/sock.c | 4 ++-- 3 files changed, 4 insertions(+), 2 deletions(-)
diff --git a/dlls/ntdll/unix/socket.c b/dlls/ntdll/unix/socket.c index 0812ec4970f..eb278096b43 100644 --- a/dlls/ntdll/unix/socket.c +++ b/dlls/ntdll/unix/socket.c @@ -223,6 +223,7 @@ static NTSTATUS sock_recv( HANDLE handle, HANDLE event, PIO_APC_ROUTINE apc, voi req->status = status; req->total = information; req->async = server_async( handle, &async->io, event, apc, apc_user, io ); + req->oob = !!(unix_flags & MSG_OOB); status = wine_server_call( req ); wait_handle = wine_server_ptr_handle( reply->wait ); options = reply->options; diff --git a/server/protocol.def b/server/protocol.def index f0a9107cfbe..88e5ad6a96b 100644 --- a/server/protocol.def +++ b/server/protocol.def @@ -1468,6 +1468,7 @@ enum server_fd_type
/* Perform a recv on a socket */ @REQ(recv_socket) + int oob; /* are we receiving OOB data? */ async_data_t async; /* async I/O parameters */ unsigned int status; /* status of initial call */ unsigned int total; /* number of bytes already read */ diff --git a/server/sock.c b/server/sock.c index 549cde17296..04e27328d80 100644 --- a/server/sock.c +++ b/server/sock.c @@ -2452,8 +2452,8 @@ DECL_HANDLER(recv_socket) /* are we shut down? */ if (status == STATUS_PENDING && !(sock->state & FD_READ)) status = STATUS_PIPE_DISCONNECTED;
- sock->pending_events &= ~FD_READ; - sock->reported_events &= ~FD_READ; + sock->pending_events &= ~(req->oob ? FD_OOB : FD_READ); + sock->reported_events &= ~(req->oob ? FD_OOB : FD_READ);
if ((async = create_request_async( fd, get_fd_comp_flags( fd ), &req->async ))) {