From 13ca3bfae89511f9ad67c54b530c827fe092178b Mon Sep 17 00:00:00 2001 From: Santiago Gimeno Date: Wed, 2 Sep 2020 19:43:13 +0200 Subject: [PATCH] win,udp: fix error code returned by connect() PR-URL: https://github.com/libuv/libuv/pull/2981 Reviewed-By: Colin Ihrig --- src/win/udp.c | 4 ++-- test/test-udp-connect.c | 11 +++++++++++ 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/src/win/udp.c b/src/win/udp.c index 7032b685..68ca728a 100644 --- a/src/win/udp.c +++ b/src/win/udp.c @@ -1073,7 +1073,7 @@ int uv__udp_connect(uv_udp_t* handle, err = connect(handle->socket, addr, addrlen); if (err) - return uv_translate_sys_error(err); + return uv_translate_sys_error(WSAGetLastError()); handle->flags |= UV_HANDLE_UDP_CONNECTED; @@ -1089,7 +1089,7 @@ int uv__udp_disconnect(uv_udp_t* handle) { err = connect(handle->socket, &addr, sizeof(addr)); if (err) - return uv_translate_sys_error(err); + return uv_translate_sys_error(WSAGetLastError()); handle->flags &= ~UV_HANDLE_UDP_CONNECTED; return 0; diff --git a/test/test-udp-connect.c b/test/test-udp-connect.c index 58cf9475..41ace117 100644 --- a/test/test-udp-connect.c +++ b/test/test-udp-connect.c @@ -124,6 +124,17 @@ TEST_IMPL(udp_connect) { buf = uv_buf_init("EXIT", 4); + // connect() to INADDR_ANY fails on Windows wih WSAEADDRNOTAVAIL + ASSERT_EQ(0, uv_ip4_addr("0.0.0.0", TEST_PORT, &tmp_addr)); + r = uv_udp_connect(&client, (const struct sockaddr*) &tmp_addr); +#ifdef _WIN32 + ASSERT_EQ(r, UV_EADDRNOTAVAIL); +#else + ASSERT_EQ(r, 0); + r = uv_udp_connect(&client, NULL); + ASSERT_EQ(r, 0); +#endif + ASSERT(0 == uv_ip4_addr("8.8.8.8", TEST_PORT, &ext_addr)); ASSERT(0 == uv_ip4_addr("127.0.0.1", TEST_PORT, &lo_addr));