[PATCH v2 4/5] ws2_32/tests: Always return overlapped sockets from tcp_socketpair().
Zebediah Figura
z.figura12 at gmail.com
Thu May 6 17:54:08 CDT 2021
Signed-off-by: Zebediah Figura <z.figura12 at gmail.com>
---
dlls/ws2_32/tests/sock.c | 57 +++++++++-------------------------------
1 file changed, 13 insertions(+), 44 deletions(-)
diff --git a/dlls/ws2_32/tests/sock.c b/dlls/ws2_32/tests/sock.c
index eeba272076b..116f9e23224 100644
--- a/dlls/ws2_32/tests/sock.c
+++ b/dlls/ws2_32/tests/sock.c
@@ -160,52 +160,16 @@ static int client_id;
static SOCKET setup_server_socket(struct sockaddr_in *addr, int *len);
static SOCKET setup_connector_socket(struct sockaddr_in *addr, int len, BOOL nonblock);
-static void tcp_socketpair(SOCKET *src, SOCKET *dst)
-{
- SOCKET server = INVALID_SOCKET;
- struct sockaddr_in addr;
- int len;
- int ret;
-
- *src = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
- ok(*src != INVALID_SOCKET, "failed to create socket, error %u\n", WSAGetLastError());
-
- server = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
- ok(server != INVALID_SOCKET, "failed to create socket, error %u\n", WSAGetLastError());
-
- memset(&addr, 0, sizeof(addr));
- addr.sin_family = AF_INET;
- addr.sin_addr.s_addr = inet_addr("127.0.0.1");
- ret = bind(server, (struct sockaddr*)&addr, sizeof(addr));
- ok(!ret, "failed to bind socket, error %u\n", WSAGetLastError());
-
- len = sizeof(addr);
- ret = getsockname(server, (struct sockaddr*)&addr, &len);
- ok(!ret, "failed to get address, error %u\n", WSAGetLastError());
-
- ret = listen(server, 1);
- ok(!ret, "failed to listen, error %u\n", WSAGetLastError());
-
- ret = connect(*src, (struct sockaddr*)&addr, sizeof(addr));
- ok(!ret, "failed to connect, error %u\n", WSAGetLastError());
-
- len = sizeof(addr);
- *dst = accept(server, (struct sockaddr*)&addr, &len);
- ok(*dst != INVALID_SOCKET, "failed to accept, error %u\n", WSAGetLastError());
-
- closesocket(server);
-}
-
-static void tcp_socketpair_ovl(SOCKET *src, SOCKET *dst)
+static void tcp_socketpair_flags(SOCKET *src, SOCKET *dst, DWORD flags)
{
SOCKET server = INVALID_SOCKET;
struct sockaddr_in addr;
int len, ret;
- *src = WSASocketW(AF_INET, SOCK_STREAM, IPPROTO_TCP, NULL, 0, WSA_FLAG_OVERLAPPED);
+ *src = WSASocketW(AF_INET, SOCK_STREAM, IPPROTO_TCP, NULL, 0, flags);
ok(*src != INVALID_SOCKET, "failed to create socket, error %u\n", WSAGetLastError());
- server = WSASocketW(AF_INET, SOCK_STREAM, IPPROTO_TCP, NULL, 0, WSA_FLAG_OVERLAPPED);
+ server = WSASocketW(AF_INET, SOCK_STREAM, IPPROTO_TCP, NULL, 0, flags);
ok(server != INVALID_SOCKET, "failed to create socket, error %u\n", WSAGetLastError());
memset(&addr, 0, sizeof(addr));
@@ -231,6 +195,11 @@ static void tcp_socketpair_ovl(SOCKET *src, SOCKET *dst)
closesocket(server);
}
+static void tcp_socketpair(SOCKET *src, SOCKET *dst)
+{
+ tcp_socketpair_flags(src, dst, WSA_FLAG_OVERLAPPED);
+}
+
static void set_so_opentype ( BOOL overlapped )
{
int optval = !overlapped, newval, len = sizeof (int);
@@ -8377,29 +8346,29 @@ static void test_iocp(void)
SOCKET src, dst;
int i;
- tcp_socketpair_ovl(&src, &dst);
+ tcp_socketpair(&src, &dst);
sync_read(src, dst);
iocp_async_read(src, dst);
closesocket(src);
closesocket(dst);
- tcp_socketpair_ovl(&src, &dst);
+ tcp_socketpair(&src, &dst);
iocp_async_read_thread(src, dst);
closesocket(src);
closesocket(dst);
for (i = 0; i <= 2; i++)
{
- tcp_socketpair_ovl(&src, &dst);
+ tcp_socketpair(&src, &dst);
iocp_async_read_closesocket(src, i);
closesocket(dst);
}
- tcp_socketpair_ovl(&src, &dst);
+ tcp_socketpair(&src, &dst);
iocp_async_closesocket(src);
closesocket(dst);
- tcp_socketpair_ovl(&src, &dst);
+ tcp_socketpair(&src, &dst);
iocp_async_read_thread_closesocket(src);
closesocket(dst);
}
--
2.30.2
More information about the wine-devel
mailing list