From: Zebediah Figura zfigura@codeweavers.com
--- dlls/ws2_32/tests/sock.c | 2 +- server/sock.c | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-)
diff --git a/dlls/ws2_32/tests/sock.c b/dlls/ws2_32/tests/sock.c index e37887fadc8..d777be96df3 100644 --- a/dlls/ws2_32/tests/sock.c +++ b/dlls/ws2_32/tests/sock.c @@ -6446,7 +6446,7 @@ static void test_close_events(struct event_test_ctx *ctx)
close_with_rst(client);
- check_events_todo_msg(ctx, MAKELONG(FD_CLOSE, WSAECONNABORTED), 0, 200); + check_events(ctx, MAKELONG(FD_CLOSE, WSAECONNABORTED), 0, 200); check_events(ctx, 0, 0, 0); select_events(ctx, server, FD_ACCEPT | FD_CLOSE | FD_CONNECT | FD_OOB | FD_READ); if (ctx->is_message) diff --git a/server/sock.c b/server/sock.c index 49ce4d254f6..072aac67723 100644 --- a/server/sock.c +++ b/server/sock.c @@ -631,7 +631,11 @@ static void sock_wake_up( struct sock *sock ) enum afd_poll_bit event = event_bitorder[i]; if (events & (1 << event)) { - lparam_t lparam = afd_poll_flag_to_win32(1 << event) | (sock_get_error( sock->errors[event] ) << 16); + lparam_t lparam; + if (event == AFD_POLL_BIT_RESET) + lparam = FD_CLOSE | (WSAECONNABORTED << 16); + else + lparam = afd_poll_flag_to_win32(1 << event) | (sock_get_error( sock->errors[event] ) << 16); post_message( sock->window, sock->message, sock->wparam, lparam ); } }