From 5074a5798972230dc81759452aaf5175dc4e2c8a Mon Sep 17 00:00:00 2001 From: Jameson Nash Date: Wed, 21 Mar 2018 17:29:44 -0400 Subject: [PATCH] win,tcp: handle canceled connect with ECANCELED This aligns Windows behavior with Unix. Refs: https://github.com/JuliaLang/julia/pull/26545 PR-URL: https://github.com/libuv/libuv/pull/1783 Reviewed-By: Ben Noordhuis Reviewed-By: Colin Ihrig --- src/win/tcp.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/win/tcp.c b/src/win/tcp.c index f84a0d1e..39c1ff05 100644 --- a/src/win/tcp.c +++ b/src/win/tcp.c @@ -1171,11 +1171,14 @@ void uv_process_tcp_connect_req(uv_loop_t* loop, uv_tcp_t* handle, err = 0; if (REQ_SUCCESS(req)) { - if (setsockopt(handle->socket, - SOL_SOCKET, - SO_UPDATE_CONNECT_CONTEXT, - NULL, - 0) == 0) { + if (handle->flags & UV__HANDLE_CLOSING) { + /* use UV_ECANCELED for consistency with Unix */ + err = ERROR_OPERATION_ABORTED; + } else if (setsockopt(handle->socket, + SOL_SOCKET, + SO_UPDATE_CONNECT_CONTEXT, + NULL, + 0) == 0) { uv_connection_init((uv_stream_t*)handle); handle->flags |= UV_HANDLE_READABLE | UV_HANDLE_WRITABLE; loop->active_tcp_streams++;