From 7a8d43043a86248af45d9456855e4564b81734db Mon Sep 17 00:00:00 2001 From: Bruno Jesus <00cpxxx@gmail.com> Date: Wed, 5 Feb 2014 00:47:55 -0200 Subject: [PATCH] ws2_32/tests: Fix AcceptEx tests related to address length. --- dlls/ws2_32/tests/sock.c | 56 +++++++++++++++++++++++++--------------- 1 file changed, 35 insertions(+), 21 deletions(-) diff --git a/dlls/ws2_32/tests/sock.c b/dlls/ws2_32/tests/sock.c index 8cee6322846..1c22503b33e 100644 --- a/dlls/ws2_32/tests/sock.c +++ b/dlls/ws2_32/tests/sock.c @@ -5919,10 +5919,24 @@ static void test_AcceptEx(void) ok(bret == FALSE && WSAGetLastError() == WSAENOTSOCK, "AcceptEx on invalid listening socket " "returned %d + errno %d\n", bret, WSAGetLastError()); + bret = pAcceptEx(listener, acceptor, buffer, sizeof(buffer) - 2*(sizeof(struct sockaddr_in) + 16), + sizeof(struct sockaddr_in) + 16, sizeof(struct sockaddr_in) + 16, + &bytesReturned, &overlapped); +todo_wine + ok(bret == FALSE && WSAGetLastError() == WSAEINVAL, "AcceptEx on a non-listening socket " + "returned %d + errno %d\n", bret, WSAGetLastError()); + + iret = listen(listener, 5); + if (iret != 0) { + skip("listening failed, errno = %d\n", WSAGetLastError()); + goto end; + } + bret = pAcceptEx(listener, INVALID_SOCKET, buffer, sizeof(buffer) - 2*(sizeof(struct sockaddr_in) + 16), sizeof(struct sockaddr_in) + 16, sizeof(struct sockaddr_in) + 16, &bytesReturned, &overlapped); - ok(bret == FALSE && WSAGetLastError() == WSAEINVAL, "AcceptEx on invalid accepting socket " +todo_wine + ok(bret == FALSE && WSAGetLastError() == WSAENOTSOCK, "AcceptEx on invalid listening socket " "returned %d + errno %d\n", bret, WSAGetLastError()); bret = pAcceptEx(listener, acceptor, NULL, sizeof(buffer) - 2*(sizeof(struct sockaddr_in) + 16), @@ -5935,23 +5949,35 @@ static void test_AcceptEx(void) bret = pAcceptEx(listener, acceptor, buffer, 0, 0, sizeof(struct sockaddr_in) + 16, &bytesReturned, &overlapped); - ok(bret == FALSE && WSAGetLastError() == WSAEINVAL, "AcceptEx on too small local address size " - "returned %d + errno %d\n", bret, WSAGetLastError()); +todo_wine + ok(bret == FALSE && (WSAGetLastError() == ERROR_IO_PENDING || broken(WSAGetLastError() == WSAEINVAL)) /* NT4 */, + "AcceptEx on too small local address size returned %d + errno %d\n", + bret, WSAGetLastError()); + bret = CancelIo((HANDLE) listener); + ok(bret, "Failed to cancel pending accept socket\n"); bret = pAcceptEx(listener, acceptor, buffer, 0, sizeof(struct sockaddr_in) + 15, sizeof(struct sockaddr_in) + 16, &bytesReturned, &overlapped); - ok(bret == FALSE && WSAGetLastError() == WSAEINVAL, "AcceptEx on too small local address size " - "returned %d + errno %d\n", bret, WSAGetLastError()); +todo_wine + ok(bret == FALSE && WSAGetLastError() == ERROR_IO_PENDING, "AcceptEx on too small local address " + "size returned %d + errno %d\n", + bret, WSAGetLastError()); + bret = CancelIo((HANDLE) listener); + ok(bret, "Failed to cancel pending accept socket\n"); bret = pAcceptEx(listener, acceptor, buffer, 0, sizeof(struct sockaddr_in) + 16, 0, &bytesReturned, &overlapped); - ok(bret == FALSE && WSAGetLastError() == WSAEINVAL, "AcceptEx on too small remote address size " - "returned %d + errno %d\n", bret, WSAGetLastError()); +todo_wine + ok(bret == FALSE && (WSAGetLastError() == WSAEFAULT || broken(WSAGetLastError() == WSAEINVAL)) /* NT4 */, + "AcceptEx on too small remote address size returned %d + errno %d\n", bret, WSAGetLastError()); bret = pAcceptEx(listener, acceptor, buffer, 0, sizeof(struct sockaddr_in) + 16, sizeof(struct sockaddr_in) + 15, &bytesReturned, &overlapped); - ok(bret == FALSE && WSAGetLastError() == WSAEINVAL, "AcceptEx on too small remote address size " - "returned %d + errno %d\n", bret, WSAGetLastError()); +todo_wine + ok(bret == FALSE && (WSAGetLastError() == ERROR_IO_PENDING || broken(WSAGetLastError() == WSAEINVAL)) /* NT4 */, + "AcceptEx on too small remote address size returned %d + errno %d\n", bret, WSAGetLastError()); + bret = CancelIo((HANDLE) listener); + ok(bret, "Failed to cancel pending accept socket\n"); bret = pAcceptEx(listener, acceptor, buffer, 0, sizeof(struct sockaddr_in) + 16, sizeof(struct sockaddr_in) + 16, @@ -5963,18 +5989,6 @@ static void test_AcceptEx(void) ok(bret == FALSE && WSAGetLastError() == ERROR_INVALID_PARAMETER, "AcceptEx on a NULL overlapped " "returned %d + errno %d\n", bret, WSAGetLastError()); - bret = pAcceptEx(listener, acceptor, buffer, sizeof(buffer) - 2*(sizeof(struct sockaddr_in) + 16), - sizeof(struct sockaddr_in) + 16, sizeof(struct sockaddr_in) + 16, - &bytesReturned, &overlapped); - todo_wine ok(bret == FALSE && WSAGetLastError() == WSAEINVAL, "AcceptEx on a non-listening socket " - "returned %d + errno %d\n", bret, WSAGetLastError()); - - iret = listen(listener, 5); - if (iret != 0) { - skip("listening failed, errno = %d\n", WSAGetLastError()); - goto end; - } - overlapped.hEvent = CreateEventA(NULL, FALSE, FALSE, NULL); if (overlapped.hEvent == NULL) { skip("could not create event object, errno = %d\n", GetLastError());