Module: wine
Branch: master
Commit: f307d472706d56ea4cfdeb98daaac39239b7d814
URL:
https://gitlab.winehq.org/wine/wine/-/commit/f307d472706d56ea4cfdeb98daaac3…
Author: Paul Gofman <pgofman(a)codeweavers.com>
Date: Wed Oct 26 13:28:00 2022 -0500
ws2_32/tests: Also test bind to any together with loopback in a different order.
---
dlls/ws2_32/tests/sock.c | 37 ++++++++++++++++++++++++++++++++++++-
1 file changed, 36 insertions(+), 1 deletion(-)
diff --git a/dlls/ws2_32/tests/sock.c b/dlls/ws2_32/tests/sock.c
index 943ee8539ea..5460bc621d3 100644
--- a/dlls/ws2_32/tests/sock.c
+++ b/dlls/ws2_32/tests/sock.c
@@ -2123,7 +2123,7 @@ static void test_so_reuseaddr(void)
closesocket(s3);
closesocket(s4);
- /* Test binding and listening on any addr together with loopback. */
+ /* Test binding and listening on any addr together with loopback, any addr first.
*/
s1 = socket(tests[i].domain, SOCK_STREAM, 0);
ok(s1 != INVALID_SOCKET, "got error %d.\n", WSAGetLastError());
@@ -2157,6 +2157,41 @@ static void test_so_reuseaddr(void)
closesocket(s3);
closesocket(s4);
+ /* Test binding and listening on any addr together with loopback, loopback addr
first. */
+
+ s1 = socket(tests[i].domain, SOCK_STREAM, 0);
+ ok(s1 != INVALID_SOCKET, "got error %d.\n", WSAGetLastError());
+
+ rc = bind(s1, tests[i].addr_loopback, tests[i].addrlen);
+ ok(!rc, "got error %d.\n", WSAGetLastError());
+
+ rc = listen(s1, 1);
+ ok(!rc, "got error %d.\n", WSAGetLastError());
+
+ s2 = socket(tests[i].domain, SOCK_STREAM, 0);
+ ok(s2 != INVALID_SOCKET, "got error %d.\n", WSAGetLastError());
+
+ rc = bind(s2, tests[i].addr_any, tests[i].addrlen);
+ todo_wine ok(!rc, "got rc %d, error %d.\n", rc, WSAGetLastError());
+
+ rc = listen(s2, 1);
+ todo_wine ok(!rc, "got error %d.\n", WSAGetLastError());
+
+ s3 = socket(tests[i].domain, SOCK_STREAM, 0);
+ ok(s3 != INVALID_SOCKET, "got error %d.\n", WSAGetLastError());
+
+ rc = connect(s3, tests[i].addr_loopback, tests[i].addrlen);
+ ok(!rc, "got error %d.\n", WSAGetLastError());
+ size = tests[i].addrlen;
+ s4 = accept(s1, &saddr, &size);
+
+ ok(s4 != INVALID_SOCKET, "got error %d.\n", WSAGetLastError());
+
+ closesocket(s1);
+ closesocket(s2);
+ closesocket(s3);
+ closesocket(s4);
+
/* Test binding to INADDR_ANY on two sockets. */
s1 = socket(tests[i].domain, SOCK_STREAM, 0);
ok(s1 != INVALID_SOCKET, "got error %d.\n", WSAGetLastError());