diff --git a/src/win/tcp.c b/src/win/tcp.c index a213ad63e7..23fadc220d 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 6b8297cbd9..6d6709f79e 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 860592f1ca..aabb7817f2 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);