Damjan Jovanovic : ws2_32:
Simplify some socket tests by adding a function that generates a pair
of connected sockets .
Alexandre Julliard
julliard at wine.codeweavers.com
Fri May 25 14:43:43 CDT 2007
Module: wine
Branch: master
Commit: 8178f8fc8815c3ad013ef635fdd8d6ec5ea51bd2
URL: http://source.winehq.org/git/wine.git/?a=commit;h=8178f8fc8815c3ad013ef635fdd8d6ec5ea51bd2
Author: Damjan Jovanovic <damjan.jov at gmail.com>
Date: Fri May 25 13:51:21 2007 +0200
ws2_32: Simplify some socket tests by adding a function that generates a pair of connected sockets.
---
dlls/ws2_32/tests/sock.c | 168 ++++++++++++++++------------------------------
1 files changed, 57 insertions(+), 111 deletions(-)
diff --git a/dlls/ws2_32/tests/sock.c b/dlls/ws2_32/tests/sock.c
index da0dda9..d0b9750 100644
--- a/dlls/ws2_32/tests/sock.c
+++ b/dlls/ws2_32/tests/sock.c
@@ -146,6 +146,57 @@ static int client_id;
/**************** General utility functions ***************/
+static int tcp_socketpair(SOCKET *src, SOCKET *dst)
+{
+ SOCKET server = INVALID_SOCKET;
+ struct sockaddr_in addr;
+ int len;
+ int ret;
+
+ *src = INVALID_SOCKET;
+ *dst = INVALID_SOCKET;
+
+ *src = socket(AF_INET, SOCK_STREAM, 0);
+ if (*src == INVALID_SOCKET)
+ goto end;
+
+ server = socket(AF_INET, SOCK_STREAM, 0);
+ if (server == INVALID_SOCKET)
+ goto end;
+
+ 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));
+ if (ret != 0)
+ goto end;
+
+ len = sizeof(addr);
+ ret = getsockname(server, (struct sockaddr*)&addr, &len);
+ if (ret != 0)
+ goto end;
+
+ ret = listen(server, 1);
+ if (ret != 0)
+ goto end;
+
+ ret = connect(*src, (struct sockaddr*)&addr, sizeof(addr));
+ if (ret != 0)
+ goto end;
+
+ len = sizeof(addr);
+ *dst = accept(server, (struct sockaddr*)&addr, &len);
+
+end:
+ if (server != INVALID_SOCKET)
+ closesocket(server);
+ if (*src != INVALID_SOCKET && *dst != INVALID_SOCKET)
+ return 0;
+ closesocket(*src);
+ closesocket(*dst);
+ return -1;
+}
+
static void set_so_opentype ( BOOL overlapped )
{
int optval = !overlapped, newval, len = sizeof (int);
@@ -1635,68 +1686,17 @@ static DWORD WINAPI drain_socket_thread(LPVOID arg)
static void test_send(void)
{
SOCKET src = INVALID_SOCKET;
- SOCKET server = INVALID_SOCKET;
SOCKET dst = INVALID_SOCKET;
HANDLE hThread = NULL;
- struct sockaddr_in addr;
- int len;
const int buflen = 1024*1024;
char *buffer = NULL;
int ret;
DWORD id;
- src = socket(AF_INET, SOCK_STREAM, 0);
- if (src == INVALID_SOCKET)
- {
- ok(0, "socket failed, error %d\n", WSAGetLastError());
- goto end;
- }
-
- server = socket(AF_INET, SOCK_STREAM, 0);
- if (server == INVALID_SOCKET)
- {
- ok(0, "socket failed, error %d\n", WSAGetLastError());
- goto end;
- }
-
- 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));
- if (ret != 0)
- {
- ok(0, "bind failed, error %d\n", WSAGetLastError());
- goto end;
- }
-
- len = sizeof(addr);
- ret = getsockname(server, (struct sockaddr*)&addr, &len);
- if (ret != 0)
- {
- ok(0, "getsockname failed, error %d\n", WSAGetLastError());
- goto end;
- }
-
- ret = listen(server, 1);
- if (ret != 0)
- {
- ok(0, "listen failed, error %d\n", WSAGetLastError());
- goto end;
- }
-
- ret = connect(src, (struct sockaddr*)&addr, sizeof(addr));
- if (ret != 0)
- {
- ok(0, "connect failed, error %d\n", WSAGetLastError());
- goto end;
- }
-
- len = sizeof(addr);
- dst = accept(server, (struct sockaddr*)&addr, &len);
- if (dst == INVALID_SOCKET)
+ if (tcp_socketpair(&src, &dst) != 0)
{
- ok(0, "accept failed, error %d\n", WSAGetLastError());
- goto end;
+ ok(0, "creating socket pair failed, skipping test\n");
+ return;
}
hThread = CreateThread(NULL, 0, drain_socket_thread, &dst, 0, &id);
@@ -1722,8 +1722,6 @@ static void test_send(void)
end:
if (src != INVALID_SOCKET)
closesocket(src);
- if (server != INVALID_SOCKET)
- closesocket(server);
if (dst != INVALID_SOCKET)
closesocket(dst);
if (hThread != NULL)
@@ -1734,68 +1732,18 @@ end:
static void test_write_events(void)
{
SOCKET src = INVALID_SOCKET;
- SOCKET server = INVALID_SOCKET;
SOCKET dst = INVALID_SOCKET;
HANDLE hThread = NULL;
HANDLE hEvent = INVALID_HANDLE_VALUE;
- struct sockaddr_in addr;
int len;
u_long one = 1;
int ret;
DWORD id;
- src = socket(AF_INET, SOCK_STREAM, 0);
- if (src == INVALID_SOCKET)
- {
- ok(0, "socket failed, error %d\n", WSAGetLastError());
- goto end;
- }
-
- server = socket(AF_INET, SOCK_STREAM, 0);
- if (server == INVALID_SOCKET)
- {
- ok(0, "socket failed, error %d\n", WSAGetLastError());
- goto end;
- }
-
- 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));
- if (ret != 0)
- {
- ok(0, "bind failed, error %d\n", WSAGetLastError());
- goto end;
- }
-
- len = sizeof(addr);
- ret = getsockname(server, (struct sockaddr*)&addr, &len);
- if (ret != 0)
- {
- ok(0, "getsockname failed, error %d\n", WSAGetLastError());
- goto end;
- }
-
- ret = listen(server, 1);
- if (ret != 0)
- {
- ok(0, "listen failed, error %d\n", WSAGetLastError());
- goto end;
- }
-
- ret = connect(src, (struct sockaddr*)&addr, sizeof(addr));
- if (ret != 0)
- {
- ok(0, "connect failed, error %d\n", WSAGetLastError());
- goto end;
- }
-
- len = sizeof(addr);
- dst = accept(server, (struct sockaddr*)&addr, &len);
- if (dst == INVALID_SOCKET)
+ if (tcp_socketpair(&src, &dst) != 0)
{
- ok(0, "accept failed, error %d\n", WSAGetLastError());
- goto end;
+ ok(0, "creating socket pair failed, skipping test\n");
+ return;
}
hThread = CreateThread(NULL, 0, drain_socket_thread, &dst, 0, &id);
@@ -1863,8 +1811,6 @@ static void test_write_events(void)
end:
if (src != INVALID_SOCKET)
closesocket(src);
- if (server != INVALID_SOCKET)
- closesocket(server);
if (dst != INVALID_SOCKET)
closesocket(dst);
if (hThread != NULL)
More information about the wine-cvs
mailing list