[2/2] ws2_32/tests: Show that the last WSACleanup must destroy sockets
Bruno Jesus
00cpxxx at gmail.com
Mon Jan 6 16:58:56 CST 2014
The last WSACleanup must close all sockets, starting again with
WSAStartup will not recover the destroyed sockets.
Related to bug 18670.
-------------- next part --------------
---
dlls/ws2_32/tests/sock.c | 27 +++++++++++++++++++++++++++
1 file changed, 27 insertions(+)
diff --git a/dlls/ws2_32/tests/sock.c b/dlls/ws2_32/tests/sock.c
index 9a90454..86a829e 100644
--- a/dlls/ws2_32/tests/sock.c
+++ b/dlls/ws2_32/tests/sock.c
@@ -1027,6 +1027,8 @@ static void test_WithWSAStartup(void)
WORD version = MAKEWORD( 2, 2 );
INT res;
LPVOID ptr;
+ SOCKET src, dst;
+ DWORD error;
res = WSAStartup( version, &data );
ok(res == 0, "WSAStartup() failed unexpectedly: %d\n", res);
@@ -1034,6 +1036,31 @@ static void test_WithWSAStartup(void)
ptr = gethostbyname("localhost");
ok(ptr != NULL, "gethostbyname() failed unexpectedly: %d\n", WSAGetLastError());
+ ok(!tcp_socketpair(&src, &dst), "creating socket pair failed\n");
+
+ res = send(src, "TEST", 4, 0);
+ ok(res == 4, "send failed with error %d\n", WSAGetLastError());
+
+ WSACleanup();
+
+ res = WSAStartup( version, &data );
+ ok(res == 0, "WSAStartup() failed unexpectedly: %d\n", res);
+
+ /* show that sockets are destroyed automatically after WSACleanup */
+ todo_wine {
+ SetLastError(0xdeadbeef);
+ res = send(src, "TEST", 4, 0);
+ error = WSAGetLastError();
+ ok(res == SOCKET_ERROR, "send should have failed\n");
+ ok(error == WSAENOTSOCK, "expected 10038, got %d\n", error);
+
+ SetLastError(0xdeadbeef);
+ res = closesocket(dst);
+ error = WSAGetLastError();
+ ok(res == SOCKET_ERROR, "closesocket should have failed\n");
+ ok(error == WSAENOTSOCK, "expected 10038, got %d\n", error);
+ }
+
WSACleanup();
}
--
1.8.3.2
More information about the wine-patches
mailing list