win,udp: fix error code returned by connect()

PR-URL: https://github.com/libuv/libuv/pull/2981
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
This commit is contained in:
Santiago Gimeno 2020-09-02 19:43:13 +02:00 committed by cjihrig
parent 1136420758
commit 13ca3bfae8
No known key found for this signature in database
GPG Key ID: 7434390BDBE9B9C5
2 changed files with 13 additions and 2 deletions

View File

@ -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;

View File

@ -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));