Commit aa6b2482 authored by Zebediah Figura's avatar Zebediah Figura Committed by Alexandre Julliard

server: Poll for FD_CLOSE even if we cannot receive more data.

parent 7529f46a
......@@ -4455,12 +4455,12 @@ static void test_close_events(struct event_test_ctx *ctx)
check_events(ctx, 0, 0, 0);
select_events(ctx, server, FD_ACCEPT | FD_CLOSE | FD_CONNECT | FD_OOB | FD_READ);
if (ctx->is_message)
check_events_todo_msg(ctx, FD_CLOSE, 0, 200);
check_events(ctx, FD_CLOSE, 0, 200);
check_events(ctx, 0, 0, 0);
select_events(ctx, server, 0);
select_events(ctx, server, FD_ACCEPT | FD_CLOSE | FD_CONNECT | FD_OOB | FD_READ);
if (ctx->is_message)
check_events_todo_msg(ctx, FD_CLOSE, 0, 200);
check_events(ctx, FD_CLOSE, 0, 200);
check_events(ctx, 0, 0, 0);
ret = recv(server, buffer, 5, 0);
......@@ -4553,7 +4553,7 @@ static void test_close_events(struct event_test_ctx *ctx)
check_events(ctx, 0, 0, 200);
select_events(ctx, server, FD_ACCEPT | FD_CLOSE | FD_CONNECT | FD_OOB | FD_READ);
check_events_todo_event(ctx, FD_CLOSE, 0, 200);
check_events_todo(ctx, FD_CLOSE, 0, 200);
closesocket(server);
}
......
......@@ -786,8 +786,7 @@ static int sock_get_poll_events( struct fd *fd )
else if (smask & FD_READ || (sock->state & FD_WINE_LISTENING && mask & FD_ACCEPT))
ev |= POLLIN | POLLPRI;
/* We use POLLIN with 0 bytes recv() as FD_CLOSE indication for stream sockets. */
else if (sock->type == WS_SOCK_STREAM && (sock->state & FD_READ) && (mask & FD_CLOSE) &&
!(sock->reported_events & FD_READ))
else if (sock->type == WS_SOCK_STREAM && (mask & FD_CLOSE) && !(sock->reported_events & FD_READ))
ev |= POLLIN;
if (async_queued( &sock->write_q ))
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment