From: Zebediah Figura zfigura@codeweavers.com
Wine-Bug: https://bugs.winehq.org//show_bug.cgi?id=54342 --- dlls/ws2_32/tests/sock.c | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-)
diff --git a/dlls/ws2_32/tests/sock.c b/dlls/ws2_32/tests/sock.c index fc3c7053aa1..9f6cd487777 100644 --- a/dlls/ws2_32/tests/sock.c +++ b/dlls/ws2_32/tests/sock.c @@ -7626,24 +7626,29 @@ static void test_WSARecv(void)
memset(&ov, 0, sizeof(ov)); flags = 0; - bufs[0].len = 2; + bufs[0].len = 1; bufs[0].buf = buf;
- /* Send 4 bytes and receive in two calls of 2 */ + /* Send 2 bytes and receive in two calls of 1 */ SetLastError(0xdeadbeef); - iret = send(src, "test", 4, 0); - ok(iret == 4, "Expected 4, got %d\n", iret); + iret = send(src, "ab", 2, 0); + ok(iret == 2, "got %d\n", iret); ok(GetLastError() == ERROR_SUCCESS, "Expected 0, got %ld\n", GetLastError()); SetLastError(0xdeadbeef); bytesReturned = 0xdeadbeef;
+ /* Non-overlapped WSARecv() performs an alertable wait (tested below), but + * not if it completes synchronously. Make sure it completes synchronously + * by polling for input. */ + check_poll_mask(dest, POLLRDNORM, POLLRDNORM); + apc_count = 0; dwret = QueueUserAPC(apc_func, GetCurrentThread(), (ULONG_PTR)&apc_count); ok(dwret, "QueueUserAPC returned %lu\n", dwret);
iret = WSARecv(dest, bufs, 1, &bytesReturned, &flags, NULL, NULL); ok(!iret, "Expected 0, got %d\n", iret); - ok(bytesReturned == 2, "Expected 2, got %ld\n", bytesReturned); + ok(bytesReturned == 1, "got %ld\n", bytesReturned); ok(GetLastError() == ERROR_SUCCESS, "Expected 0, got %ld\n", GetLastError());
ok(!apc_count, "got apc_count %u.\n", apc_count); @@ -7654,7 +7659,7 @@ static void test_WSARecv(void) bytesReturned = 0xdeadbeef; iret = WSARecv(dest, bufs, 1, &bytesReturned, &flags, NULL, NULL); ok(!iret, "Expected 0, got %d\n", iret); - ok(bytesReturned == 2, "Expected 2, got %ld\n", bytesReturned); + ok(bytesReturned == 1, "got %ld\n", bytesReturned); ok(GetLastError() == ERROR_SUCCESS, "Expected 0, got %ld\n", GetLastError());
bufs[0].len = 4;
From: Zebediah Figura zfigura@codeweavers.com
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=54113 --- dlls/ws2_32/tests/afd.c | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-)
diff --git a/dlls/ws2_32/tests/afd.c b/dlls/ws2_32/tests/afd.c index b856caee853..b011c0da69f 100644 --- a/dlls/ws2_32/tests/afd.c +++ b/dlls/ws2_32/tests/afd.c @@ -2058,17 +2058,20 @@ static void test_get_events_reset(void)
tcp_socketpair(&client, &server);
- ret = WSAEventSelect(client, event, FD_ACCEPT | FD_CONNECT | FD_CLOSE | FD_OOB | FD_READ | FD_WRITE); + ret = WSAEventSelect(client, event, FD_ACCEPT | FD_CLOSE | FD_OOB | FD_READ); ok(!ret, "got error %lu\n", GetLastError());
close_with_rst(server);
+ ret = WaitForSingleObject(event, 1000); + ok(!ret, "got %d\n", ret); + memset(¶ms, 0xcc, sizeof(params)); memset(&io, 0xcc, sizeof(io)); ret = NtDeviceIoControlFile((HANDLE)client, NULL, NULL, NULL, &io, IOCTL_AFD_GET_EVENTS, NULL, 0, ¶ms, sizeof(params)); ok(!ret, "got %#x\n", ret); - ok(params.flags == (AFD_POLL_RESET | AFD_POLL_CONNECT | AFD_POLL_WRITE), "got flags %#x\n", params.flags); + ok(params.flags == AFD_POLL_RESET, "got flags %#x\n", params.flags); for (i = 0; i < ARRAY_SIZE(params.status); ++i) ok(!params.status[i], "got status[%u] %#x\n", i, params.status[i]);
@@ -2076,17 +2079,21 @@ static void test_get_events_reset(void)
tcp_socketpair(&client, &server);
- ret = WSAEventSelect(server, event, FD_ACCEPT | FD_CONNECT | FD_CLOSE | FD_OOB | FD_READ | FD_WRITE); + ResetEvent(event); + ret = WSAEventSelect(server, event, FD_ACCEPT | FD_CLOSE | FD_OOB | FD_READ); ok(!ret, "got error %lu\n", GetLastError());
close_with_rst(client);
+ ret = WaitForSingleObject(event, 1000); + ok(!ret, "got %d\n", ret); + memset(¶ms, 0xcc, sizeof(params)); memset(&io, 0xcc, sizeof(io)); ret = NtDeviceIoControlFile((HANDLE)server, NULL, NULL, NULL, &io, IOCTL_AFD_GET_EVENTS, NULL, 0, ¶ms, sizeof(params)); ok(!ret, "got %#x\n", ret); - ok(params.flags == (AFD_POLL_RESET | AFD_POLL_WRITE), "got flags %#x\n", params.flags); + ok(params.flags == AFD_POLL_RESET, "got flags %#x\n", params.flags); for (i = 0; i < ARRAY_SIZE(params.status); ++i) ok(!params.status[i], "got status[%u] %#x\n", i, params.status[i]);