[3/4] ws2_32/tests: Improve setup_connector_socket to allow non-blocking connect calls
Bruno Jesus
00cpxxx at gmail.com
Fri Mar 6 12:25:07 CST 2015
-------------- next part --------------
---
dlls/ws2_32/tests/sock.c | 31 ++++++++++++++++++++++---------
1 file changed, 22 insertions(+), 9 deletions(-)
diff --git a/dlls/ws2_32/tests/sock.c b/dlls/ws2_32/tests/sock.c
index 4f4c434..360a0a1 100644
--- a/dlls/ws2_32/tests/sock.c
+++ b/dlls/ws2_32/tests/sock.c
@@ -196,6 +196,9 @@ static int client_id;
/**************** General utility functions ***************/
+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 int tcp_socketpair(SOCKET *src, SOCKET *dst)
{
SOCKET server = INVALID_SOCKET;
@@ -3630,7 +3633,7 @@ static SOCKET setup_server_socket(struct sockaddr_in *addr, int *len)
return server_socket;
}
-static SOCKET setup_connector_socket(struct sockaddr_in *addr, int len)
+static SOCKET setup_connector_socket(struct sockaddr_in *addr, int len, BOOL nonblock)
{
int ret;
SOCKET connector;
@@ -3638,8 +3641,18 @@ static SOCKET setup_connector_socket(struct sockaddr_in *addr, int len)
connector = socket(AF_INET, SOCK_STREAM, 0);
ok(connector != INVALID_SOCKET, "failed to create connector socket %d\n", WSAGetLastError());
+ if (nonblock)
+ set_blocking(connector, !nonblock);
+
ret = connect(connector, (struct sockaddr *)addr, len);
- ok(!ret, "connecting to accepting socket failed %d\n", WSAGetLastError());
+ if (!nonblock)
+ ok(!ret, "connecting to accepting socket failed %d\n", WSAGetLastError());
+ else if (ret == SOCKET_ERROR)
+ {
+ DWORD error = WSAGetLastError();
+ ok(error == WSAEWOULDBLOCK || error == WSAEINPROGRESS,
+ "expected 10035 or 10036, got %d\n", error);
+ }
return connector;
}
@@ -3667,7 +3680,7 @@ static void test_accept(void)
return;
}
- connector = setup_connector_socket(&address, socklen);
+ connector = setup_connector_socket(&address, socklen, FALSE);
if (connector == INVALID_SOCKET) goto done;
trace("Blocking accept next\n");
@@ -3715,7 +3728,7 @@ static void test_accept(void)
server_socket = setup_server_socket(&address, &socklen);
if (server_socket == INVALID_SOCKET) goto done;
- connector = setup_connector_socket(&address, socklen);
+ connector = setup_connector_socket(&address, socklen, FALSE);
if (connector == INVALID_SOCKET) goto done;
socklen = 0;
@@ -3726,7 +3739,7 @@ static void test_accept(void)
connector = INVALID_SOCKET;
socklen = sizeof(address);
- connector = setup_connector_socket(&address, socklen);
+ connector = setup_connector_socket(&address, socklen, FALSE);
if (connector == INVALID_SOCKET) goto done;
accepted = WSAAccept(server_socket, NULL, NULL, NULL, 0);
@@ -3736,7 +3749,7 @@ static void test_accept(void)
accepted = connector = INVALID_SOCKET;
socklen = sizeof(address);
- connector = setup_connector_socket(&address, socklen);
+ connector = setup_connector_socket(&address, socklen, FALSE);
if (connector == INVALID_SOCKET) goto done;
socklen = sizeof(ss);
@@ -3750,7 +3763,7 @@ static void test_accept(void)
accepted = connector = INVALID_SOCKET;
socklen = sizeof(address);
- connector = setup_connector_socket(&address, socklen);
+ connector = setup_connector_socket(&address, socklen, FALSE);
if (connector == INVALID_SOCKET) goto done;
socklen = 0;
@@ -3761,7 +3774,7 @@ static void test_accept(void)
accepted = connector = INVALID_SOCKET;
socklen = sizeof(address);
- connector = setup_connector_socket(&address, socklen);
+ connector = setup_connector_socket(&address, socklen, FALSE);
if (connector == INVALID_SOCKET) goto done;
accepted = accept(server_socket, NULL, NULL);
@@ -3771,7 +3784,7 @@ static void test_accept(void)
accepted = connector = INVALID_SOCKET;
socklen = sizeof(address);
- connector = setup_connector_socket(&address, socklen);
+ connector = setup_connector_socket(&address, socklen, FALSE);
if (connector == INVALID_SOCKET) goto done;
socklen = sizeof(ss);
--
1.8.3.2
More information about the wine-patches
mailing list