From 3506cd1dc5e941acb216b2118cfc784b78fcc4f1 Mon Sep 17 00:00:00 2001 From: Bert Belder Date: Thu, 5 Apr 2012 17:17:09 +0200 Subject: [PATCH] Windows: don't report ENOTSOCK when attempting to bind an udp handle twice --- src/win/tcp.c | 3 +-- src/win/udp.c | 7 +++---- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/src/win/tcp.c b/src/win/tcp.c index 25ca26bd..71c5575f 100644 --- a/src/win/tcp.c +++ b/src/win/tcp.c @@ -239,10 +239,9 @@ static int uv__bind(uv_tcp_t* handle, int addrsize) { DWORD err; int r; - SOCKET sock; if (handle->socket == INVALID_SOCKET) { - sock = socket(domain, SOCK_STREAM, 0); + SOCKET sock = socket(domain, SOCK_STREAM, 0); if (sock == INVALID_SOCKET) { uv__set_sys_error(handle->loop, WSAGetLastError()); return -1; diff --git a/src/win/udp.c b/src/win/udp.c index 18ae4a2c..7c638e45 100644 --- a/src/win/udp.c +++ b/src/win/udp.c @@ -167,7 +167,6 @@ static int uv__bind(uv_udp_t* handle, int addrsize, unsigned int flags) { int r; - SOCKET sock; DWORD no = 0, yes = 1; if ((flags & UV_UDP_IPV6ONLY) && domain != AF_INET6) { @@ -177,7 +176,7 @@ static int uv__bind(uv_udp_t* handle, } if (handle->socket == INVALID_SOCKET) { - sock = socket(domain, SOCK_DGRAM, 0); + SOCKET sock = socket(domain, SOCK_DGRAM, 0); if (sock == INVALID_SOCKET) { uv__set_sys_error(handle->loop, WSAGetLastError()); return -1; @@ -196,14 +195,14 @@ static int uv__bind(uv_udp_t* handle, /* TODO: how to handle errors? This may fail if there is no ipv4 stack */ /* available, or when run on XP/2003 which have no support for dualstack */ /* sockets. For now we're silently ignoring the error. */ - setsockopt(sock, + setsockopt(handle->socket, IPPROTO_IPV6, IPV6_V6ONLY, (char*) &no, sizeof no); } - r = setsockopt(sock, + r = setsockopt(handle->socket, SOL_SOCKET, SO_REUSEADDR, (char*) &yes,