From 28ff3a4776e817ff3c9210851afa5b98b94a8d4f Mon Sep 17 00:00:00 2001 From: Evgeny Date: Sun, 15 Feb 2026 14:31:31 +0300 Subject: [PATCH] Fix test_u_async_comprehensive: add Windows socketpair replacement using UDP sockets --- tests/test_u_async_comprehensive.c | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/tests/test_u_async_comprehensive.c b/tests/test_u_async_comprehensive.c index 763d874..025deae 100644 --- a/tests/test_u_async_comprehensive.c +++ b/tests/test_u_async_comprehensive.c @@ -384,7 +384,28 @@ static void test_concurrent_operations(void) { /* Create socket pair for testing */ int sockets[2]; void* socket_ids[2]; +#ifdef _WIN32 + // Windows doesn't have socketpair, use UDP sockets instead + sockets[0] = socket(AF_INET, SOCK_DGRAM, 0); + sockets[1] = socket(AF_INET, SOCK_DGRAM, 0); + ASSERT_TRUE(sockets[0] >= 0 && sockets[1] >= 0, "Failed to create sockets"); + + struct sockaddr_in addr1, addr2; + memset(&addr1, 0, sizeof(addr1)); + addr1.sin_family = AF_INET; + addr1.sin_addr.s_addr = inet_addr("127.0.0.1"); + addr1.sin_port = htons(0); // Let system choose port + + memset(&addr2, 0, sizeof(addr2)); + addr2.sin_family = AF_INET; + addr2.sin_addr.s_addr = inet_addr("127.0.0.1"); + addr2.sin_port = htons(0); + + ASSERT_EQ(bind(sockets[0], (struct sockaddr*)&addr1, sizeof(addr1)), 0, "Failed to bind socket 0"); + ASSERT_EQ(bind(sockets[1], (struct sockaddr*)&addr2, sizeof(addr2)), 0, "Failed to bind socket 1"); +#else ASSERT_EQ(socketpair(AF_UNIX, SOCK_DGRAM, 0, sockets), 0, "Failed to create socket pair"); +#endif /* Make non-blocking */ for (int i = 0; i < 2; i++) {