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..ce916e9a653 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, "Expected 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, "Expected 2, 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, "Expected 2, got %ld\n", bytesReturned); ok(GetLastError() == ERROR_SUCCESS, "Expected 0, got %ld\n", GetLastError());
bufs[0].len = 4;