win/udp: DRY up setting SO_REUSEADDR
This patch makes sure that only uv_udp_set_socket sets the SO_REUSEADDR bit for UDP sockets.
This commit is contained in:
parent
3d779000b1
commit
f21d94125e
@ -64,6 +64,16 @@ static int uv_udp_set_socket(uv_loop_t* loop, uv_udp_t* handle, SOCKET socket,
|
||||
|
||||
assert(handle->socket == INVALID_SOCKET);
|
||||
|
||||
/* Set SO_REUSEADDR on the socket. */
|
||||
if (setsockopt(socket,
|
||||
SOL_SOCKET,
|
||||
SO_REUSEADDR,
|
||||
(char*) &yes,
|
||||
sizeof yes) == SOCKET_ERROR) {
|
||||
uv__set_sys_error(loop, WSAGetLastError());
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* Set the socket to nonblocking mode */
|
||||
if (ioctlsocket(socket, FIONBIO, &yes) == SOCKET_ERROR) {
|
||||
uv__set_sys_error(loop, WSAGetLastError());
|
||||
@ -210,16 +220,6 @@ static int uv__bind(uv_udp_t* handle,
|
||||
sizeof no);
|
||||
}
|
||||
|
||||
r = setsockopt(handle->socket,
|
||||
SOL_SOCKET,
|
||||
SO_REUSEADDR,
|
||||
(char*) &yes,
|
||||
sizeof yes);
|
||||
if (r == SOCKET_ERROR) {
|
||||
uv__set_sys_error(handle->loop, WSAGetLastError());
|
||||
return -1;
|
||||
}
|
||||
|
||||
r = bind(handle->socket, addr, addrsize);
|
||||
if (r == SOCKET_ERROR) {
|
||||
uv__set_sys_error(handle->loop, WSAGetLastError());
|
||||
@ -656,7 +656,6 @@ int uv_udp_set_broadcast(uv_udp_t* handle, int value) {
|
||||
|
||||
|
||||
int uv_udp_open(uv_udp_t* handle, uv_os_sock_t sock) {
|
||||
int r;
|
||||
WSAPROTOCOL_INFOW protocol_info;
|
||||
int opt_len;
|
||||
DWORD yes = 1;
|
||||
@ -679,16 +678,6 @@ int uv_udp_open(uv_udp_t* handle, uv_os_sock_t sock) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
r = setsockopt(handle->socket,
|
||||
SOL_SOCKET,
|
||||
SO_REUSEADDR,
|
||||
(char*) &yes,
|
||||
sizeof yes);
|
||||
if (r == SOCKET_ERROR) {
|
||||
uv__set_sys_error(handle->loop, WSAGetLastError());
|
||||
return -1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user