diff --git a/src/win/handle.c b/src/win/handle.c index 138c200855..350623887c 100644 --- a/src/win/handle.c +++ b/src/win/handle.c @@ -45,7 +45,7 @@ int uv_getsockname(uv_handle_t* handle, struct sockaddr* name, int* namelen) { return uv_tcp_getsockname((uv_tcp_t*) handle, name, namelen); case UV_UDP: - return uv_tcp_getsockname((uv_tcp_t*) handle, name, namelen); + return uv_udp_getsockname((uv_udp_t*) handle, name, namelen); default: uv_set_sys_error(WSAENOTSOCK); diff --git a/src/win/udp.c b/src/win/udp.c index 4c1a968a9b..85a5c5cb7c 100644 --- a/src/win/udp.c +++ b/src/win/udp.c @@ -40,6 +40,19 @@ static char uv_zero_[] = ""; static unsigned int active_udp_streams = 0; +int uv_udp_getsockname(uv_udp_t* handle, struct sockaddr* name, int* namelen) { + int result; + + result = getsockname(handle->socket, name, namelen); + if (result != 0) { + uv_set_sys_error(WSAGetLastError()); + return -1; + } + + return 0; +} + + static int uv_udp_set_socket(uv_udp_t* handle, SOCKET socket) { DWORD yes = 1; @@ -200,24 +213,6 @@ int uv_udp_bind6(uv_udp_t* handle, struct sockaddr_in6 addr, unsigned int flags) } -int uv_udp_getsockname(uv_udp_t* handle, struct sockaddr* name, int* namelen) { - int result; - - if (handle->flags & UV_HANDLE_SHUTTING) { - uv_set_sys_error(WSAESHUTDOWN); - return -1; - } - - result = getsockname(handle->socket, name, namelen); - if (result != 0) { - uv_set_sys_error(WSAGetLastError()); - return -1; - } - - return 0; -} - - static void uv_udp_queue_recv(uv_udp_t* handle) { uv_req_t* req; uv_buf_t buf;