diff --git a/src/unix/stream.c b/src/unix/stream.c index 86a179b35..f0590299e 100644 --- a/src/unix/stream.c +++ b/src/unix/stream.c @@ -1264,12 +1264,15 @@ static void uv__stream_connect(uv_stream_t* stream) { } else { /* Normal situation: we need to get the socket error from the kernel. */ assert(uv__stream_fd(stream) >= 0); - getsockopt(uv__stream_fd(stream), - SOL_SOCKET, - SO_ERROR, - &error, - &errorsize); - error = UV__ERR(error); + if (getsockopt(uv__stream_fd(stream), + SOL_SOCKET, + SO_ERROR, + &error, + &errorsize)) { + error = UV__ERR(errno); + } else { + error = UV__ERR(error); + } } if (error == UV__ERR(EINPROGRESS))