ws2_32/tests: Fix some connection timeout tests.

Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
Zebediah Figura 2021-07-05 19:14:15 -05:00 committed by Alexandre Julliard
parent 780e5c83dc
commit 65dee2d28c
2 changed files with 26 additions and 10 deletions

View File

@ -448,7 +448,8 @@ static void test_poll(void)
addr.sin_port = 255;
ret = connect(client, (struct sockaddr *)&addr, sizeof(addr));
ok(!ret || WSAGetLastError() == WSAEWOULDBLOCK, "got error %u\n", WSAGetLastError());
ok(ret == -1, "got %d\n", ret);
ok(WSAGetLastError() == WSAEWOULDBLOCK, "got error %u\n", WSAGetLastError());
ret = WaitForSingleObject(event, 10000);
ok(!ret, "got %#x\n", ret);
@ -474,6 +475,7 @@ static void test_poll(void)
server = accept(listener, NULL, NULL);
ok(server != -1, "got error %u\n", WSAGetLastError());
in_params->timeout = -1000 * 10000;
in_params->count = 2;
in_params->sockets[0].socket = client;
in_params->sockets[0].flags = AFD_POLL_READ;
@ -1310,7 +1312,7 @@ static void test_get_events(void)
ok(ret == -1, "expected failure\n");
ok(WSAGetLastError() == WSAEWOULDBLOCK, "got error %u\n", WSAGetLastError());
ret = WaitForSingleObject(event, 2000);
ret = WaitForSingleObject(event, 10000);
ok(!ret, "got %#x\n", ret);
memset(&params, 0xcc, sizeof(params));

View File

@ -3252,17 +3252,20 @@ static void test_select(void)
FD_SET(fdWrite, &exceptfds);
select_timeout.tv_sec = 10;
ret = select(0, &readfds, &writefds, &exceptfds, &select_timeout);
ok(ret == 1, "expected 1, got %d\n", ret);
todo_wine ok(ret == 1, "expected 1, got %d\n", ret);
len = sizeof(id);
id = 0xdeadbeef;
ret = getsockopt(fdWrite, SOL_SOCKET, SO_ERROR, (char*)&id, &len);
ok(!ret, "getsockopt failed with %d\n", WSAGetLastError());
ok(id == WSAECONNREFUSED, "expected 10061, got %d\n", id);
ok(FD_ISSET(fdWrite, &exceptfds), "fdWrite socket is not in the set\n");
todo_wine ok(id == WSAECONNREFUSED, "got error %u\n", id);
todo_wine ok(FD_ISSET(fdWrite, &exceptfds), "fdWrite socket is not in the set\n");
ok(select_timeout.tv_usec == 250000, "select timeout should not have changed\n");
closesocket(fdWrite);
}
select_timeout.tv_sec = 1;
select_timeout.tv_usec = 250000;
/* Try select() on a closed socket after connection */
tcp_socketpair(&fdRead, &fdWrite);
closesocket(fdRead);
@ -6372,22 +6375,33 @@ static void test_WSAPoll(void)
* so make the test interactive-only. */
if (winetest_interactive)
{
const struct sockaddr_in invalid_addr = {.sin_family = AF_INET, .sin_addr.s_addr = inet_addr("192.0.2.0")};
const struct sockaddr_in invalid_addr =
{
.sin_family = AF_INET,
.sin_addr.s_addr = htonl(INADDR_LOOPBACK),
.sin_port = 255,
};
SOCKET client;
client = setup_connector_socket(&invalid_addr, sizeof(invalid_addr), TRUE);
client = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
set_blocking(client, FALSE);
ret = connect(client, (const struct sockaddr *)&invalid_addr, sizeof(invalid_addr));
ok(ret == -1, "got %d\n", ret);
ok(WSAGetLastError() == WSAEWOULDBLOCK, "got error %u\n", WSAGetLastError());
fds[0].fd = client;
fds[0].events = POLLRDNORM | POLLRDBAND | POLLWRNORM;
fds[0].revents = 0xdead;
ret = pWSAPoll(fds, 1, 10000);
ok(ret == 1, "got %d\n", ret);
ok(fds[0].revents == POLLERR, "got events %#x\n", fds[0].revents);
todo_wine ok(ret == 1, "got %d\n", ret);
todo_wine ok(fds[0].revents == (POLLWRNORM | POLLHUP | POLLERR), "got events %#x\n", fds[0].revents);
len = sizeof(err);
err = 0xdeadbeef;
ret = getsockopt(client, SOL_SOCKET, SO_ERROR, (char *)&err, &len);
ok(!ret, "getsockopt failed with %d\n", WSAGetLastError());
ok(err == WSAECONNREFUSED, "expected 10061, got %d\n", err);
todo_wine ok(err == WSAECONNREFUSED, "got error %u\n", err);
closesocket(client);
}