mirror of
git://source.winehq.org/git/wine.git
synced 2024-09-06 04:30:57 +00:00
server: Post socket events only if selecting for them.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
53210ceb0e
commit
4c409f8a3b
|
@ -4391,35 +4391,35 @@ static void test_oob_events(struct event_test_ctx *ctx)
|
||||||
ret = send(client, "a", 1, MSG_OOB);
|
ret = send(client, "a", 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(ctx, FD_OOB, 0, 200);
|
||||||
check_events_todo(ctx, 0, 0, 0);
|
check_events(ctx, 0, 0, 0);
|
||||||
select_events(ctx, server, FD_ACCEPT | FD_CLOSE | FD_CONNECT | FD_OOB | FD_READ);
|
select_events(ctx, server, FD_ACCEPT | FD_CLOSE | FD_CONNECT | FD_OOB | FD_READ);
|
||||||
if (ctx->is_message)
|
if (ctx->is_message)
|
||||||
check_events_todo_msg(ctx, FD_OOB, 0, 200);
|
check_events(ctx, FD_OOB, 0, 200);
|
||||||
check_events_todo(ctx, 0, 0, 0);
|
check_events(ctx, 0, 0, 0);
|
||||||
select_events(ctx, server, 0);
|
select_events(ctx, server, 0);
|
||||||
select_events(ctx, server, FD_ACCEPT | FD_CLOSE | FD_CONNECT | FD_OOB | FD_READ);
|
select_events(ctx, server, FD_ACCEPT | FD_CLOSE | FD_CONNECT | FD_OOB | FD_READ);
|
||||||
if (ctx->is_message)
|
if (ctx->is_message)
|
||||||
check_events_todo_msg(ctx, FD_OOB, 0, 200);
|
check_events(ctx, FD_OOB, 0, 200);
|
||||||
check_events_todo(ctx, 0, 0, 0);
|
check_events(ctx, 0, 0, 0);
|
||||||
|
|
||||||
ret = send(client, "b", 1, MSG_OOB);
|
ret = send(client, "b", 1, MSG_OOB);
|
||||||
ok(ret == 1, "got %d\n", ret);
|
ok(ret == 1, "got %d\n", ret);
|
||||||
|
|
||||||
if (!ctx->is_message)
|
if (!ctx->is_message)
|
||||||
check_events(ctx, FD_OOB, 0, 200);
|
check_events_todo_event(ctx, FD_OOB, 0, 200);
|
||||||
check_events_todo(ctx, 0, 0, 0);
|
check_events(ctx, 0, 0, 0);
|
||||||
|
|
||||||
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(ctx, FD_OOB, 0, 200);
|
check_events_todo(ctx, FD_OOB, 0, 200);
|
||||||
check_events_todo_msg(ctx, 0, 0, 0);
|
check_events(ctx, 0, 0, 0);
|
||||||
|
|
||||||
ret = recv(server, buffer, 1, MSG_OOB);
|
ret = recv(server, buffer, 1, MSG_OOB);
|
||||||
todo_wine ok(ret == 1, "got %d\n", ret);
|
todo_wine ok(ret == 1, "got %d\n", ret);
|
||||||
|
|
||||||
check_events_todo_msg(ctx, 0, 0, 0);
|
check_events(ctx, 0, 0, 0);
|
||||||
|
|
||||||
/* Send data while we're not selecting. */
|
/* Send data while we're not selecting. */
|
||||||
|
|
||||||
|
@ -4428,7 +4428,7 @@ static void test_oob_events(struct event_test_ctx *ctx)
|
||||||
ok(ret == 1, "got %d\n", ret);
|
ok(ret == 1, "got %d\n", ret);
|
||||||
select_events(ctx, server, FD_ACCEPT | FD_CLOSE | FD_CONNECT | FD_OOB | FD_READ);
|
select_events(ctx, server, FD_ACCEPT | FD_CLOSE | FD_CONNECT | FD_OOB | FD_READ);
|
||||||
|
|
||||||
check_events_todo_msg(ctx, FD_OOB, 0, 200);
|
check_events(ctx, FD_OOB, 0, 200);
|
||||||
|
|
||||||
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);
|
||||||
|
|
|
@ -627,9 +627,12 @@ static void post_socket_event( struct sock *sock, unsigned int event_bit, unsign
|
||||||
{
|
{
|
||||||
unsigned int event = (1 << event_bit);
|
unsigned int event = (1 << event_bit);
|
||||||
|
|
||||||
sock->pending_events |= event;
|
if (!(sock->reported_events & event))
|
||||||
sock->reported_events |= event;
|
{
|
||||||
sock->errors[event_bit] = error;
|
sock->pending_events |= event;
|
||||||
|
sock->reported_events |= event;
|
||||||
|
sock->errors[event_bit] = error;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void sock_dispatch_events( struct sock *sock, int prevstate, int event, int error )
|
static void sock_dispatch_events( struct sock *sock, int prevstate, int event, int error )
|
||||||
|
|
Loading…
Reference in a new issue