From 7e4d075ec1859f5fadcad4a39a261237f1d8eb03 Mon Sep 17 00:00:00 2001 From: Bruno Jesus <00cpxxx@gmail.com> Date: Mon, 6 Jan 2014 20:58:54 -0200 Subject: [PATCH] ws2_32/tests: Add some FIONREAD tests. --- dlls/ws2_32/tests/sock.c | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/dlls/ws2_32/tests/sock.c b/dlls/ws2_32/tests/sock.c index 54b0840cdfc..9a90454cd7d 100644 --- a/dlls/ws2_32/tests/sock.c +++ b/dlls/ws2_32/tests/sock.c @@ -3859,7 +3859,7 @@ static void test_addr_to_print(void) static void test_ioctlsocket(void) { - SOCKET sock; + SOCKET sock, src, dst; struct tcp_keepalive kalive; int ret, optval; static const LONG cmds[] = {FIONBIO, FIONREAD, SIOCATMARK}; @@ -3943,6 +3943,32 @@ static void test_ioctlsocket(void) ok(ret == 0 || broken(ret == SOCKET_ERROR), "WSAIoctl failed unexpectedly\n"); closesocket(sock); + + if (tcp_socketpair(&src, &dst) != 0) + { + ok(0, "creating socket pair failed, skipping test\n"); + return; + } + + /* test FIONREAD on TCP sockets */ + optval = 0xdeadbeef; + ret = WSAIoctl(dst, FIONREAD, NULL, 0, &optval, sizeof(optval), &arg, NULL, NULL); + ok(ret == 0, "WSAIoctl failed unexpectedly with error %d\n", WSAGetLastError()); + ok(optval == 0, "FIONREAD should have returned 0 bytes, got %d instead\n", optval); + + optval = 0xdeadbeef; + ok(send(src, "TEST", 4, 0) == 4, "failed to send test data\n"); + Sleep(100); + ret = WSAIoctl(dst, FIONREAD, NULL, 0, &optval, sizeof(optval), &arg, NULL, NULL); + ok(ret == 0, "WSAIoctl failed unexpectedly with error %d\n", WSAGetLastError()); + ok(optval == 4, "FIONREAD should have returned 4 bytes, got %d instead\n", optval); + + closesocket(dst); + optval = 0xdeadbeef; + ret = WSAIoctl(dst, FIONREAD, NULL, 0, &optval, sizeof(optval), &arg, NULL, NULL); + ok(ret == SOCKET_ERROR, "WSAIoctl succeeded unexpectedly\n"); + ok(optval == 0xdeadbeef, "FIONREAD should not have changed last error, got %d instead\n", optval); + closesocket(src); } static BOOL drain_pause = FALSE;