From b1a2238a10413af1437982dd80f0c61d216ec12e Mon Sep 17 00:00:00 2001 From: Zebediah Figura Date: Wed, 29 Dec 2021 17:15:33 -0600 Subject: [PATCH] server: Reselect the socket returned from accept_socket(). Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=52024 Signed-off-by: Zebediah Figura Signed-off-by: Alexandre Julliard --- dlls/ws2_32/tests/sock.c | 4 ++-- server/sock.c | 2 ++ 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/dlls/ws2_32/tests/sock.c b/dlls/ws2_32/tests/sock.c index 6bbd1c24666..9ff4a5d844d 100644 --- a/dlls/ws2_32/tests/sock.c +++ b/dlls/ws2_32/tests/sock.c @@ -5166,8 +5166,8 @@ static void test_accept_events(struct event_test_ctx *ctx) server = accept(listener, NULL, NULL); ok(server != -1, "failed to accept, error %u\n", WSAGetLastError()); ctx->socket = server; - check_events_todo(ctx, FD_WRITE, 0, 200); - check_events_todo_event(ctx, 0, 0, 0); + check_events(ctx, FD_WRITE, 0, 200); + check_events(ctx, 0, 0, 0); closesocket(server); closesocket(client); diff --git a/server/sock.c b/server/sock.c index 2df4f3d3056..736f34feac5 100644 --- a/server/sock.c +++ b/server/sock.c @@ -722,6 +722,7 @@ static void complete_async_accept( struct sock *sock, struct accept_req *req ) handle = alloc_handle_no_access_check( async_get_thread( async )->process, &acceptsock->obj, GENERIC_READ | GENERIC_WRITE | SYNCHRONIZE, OBJ_INHERIT ); acceptsock->wparam = handle; + sock_reselect( acceptsock ); release_object( acceptsock ); if (!handle) { @@ -2174,6 +2175,7 @@ static void sock_ioctl( struct fd *fd, ioctl_code_t code, struct async *async ) handle = alloc_handle( current->process, &acceptsock->obj, GENERIC_READ | GENERIC_WRITE | SYNCHRONIZE, OBJ_INHERIT ); acceptsock->wparam = handle; + sock_reselect( acceptsock ); release_object( acceptsock ); set_reply_data( &handle, sizeof(handle) ); return;