From fabafd6236e976580a2153aa1dfc985af400feee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sa=C3=BAl=20Ibarra=20Corretg=C3=A9?= Date: Sat, 23 Aug 2014 16:30:03 +0200 Subject: [PATCH] windows: make sure sockets and handles are reset on close Set the socket to INVALID_SOCKET foir TCP and UDP handles and the handle to INVALID_HANDLE_VALUE on TTY handles after closing them. --- src/win/tcp.c | 2 ++ src/win/tty.c | 1 + src/win/udp.c | 1 + 3 files changed, 4 insertions(+) diff --git a/src/win/tcp.c b/src/win/tcp.c index a213ad63..23fadc22 100644 --- a/src/win/tcp.c +++ b/src/win/tcp.c @@ -196,6 +196,7 @@ void uv_tcp_endgame(uv_loop_t* loop, uv_tcp_t* handle) { if (!(handle->flags & UV_HANDLE_TCP_SOCKET_CLOSED)) { closesocket(handle->socket); + handle->socket = INVALID_SOCKET; handle->flags |= UV_HANDLE_TCP_SOCKET_CLOSED; } @@ -1368,6 +1369,7 @@ void uv_tcp_close(uv_loop_t* loop, uv_tcp_t* tcp) { if (close_socket) { closesocket(tcp->socket); + tcp->socket = INVALID_SOCKET; tcp->flags |= UV_HANDLE_TCP_SOCKET_CLOSED; } diff --git a/src/win/tty.c b/src/win/tty.c index 6b8297cb..6d6709f7 100644 --- a/src/win/tty.c +++ b/src/win/tty.c @@ -1903,6 +1903,7 @@ void uv_tty_close(uv_tty_t* handle) { if (handle->flags & UV_HANDLE_READING) uv_tty_read_stop(handle); + handle->handle = INVALID_HANDLE_VALUE; handle->flags &= ~(UV_HANDLE_READABLE | UV_HANDLE_WRITABLE); uv__handle_closing(handle); diff --git a/src/win/udp.c b/src/win/udp.c index 860592f1..aabb7817 100644 --- a/src/win/udp.c +++ b/src/win/udp.c @@ -144,6 +144,7 @@ int uv_udp_init(uv_loop_t* loop, uv_udp_t* handle) { void uv_udp_close(uv_loop_t* loop, uv_udp_t* handle) { uv_udp_recv_stop(handle); closesocket(handle->socket); + handle->socket = INVALID_SOCKET; uv__handle_closing(handle);