diff --git a/src/connection.c b/src/connection.c index 415cbdf78..83fb84d6d 100644 --- a/src/connection.c +++ b/src/connection.c @@ -261,8 +261,9 @@ static void connSocketEventHandler(struct aeEventLoop *el, int fd, void *clientD if (conn->state == CONN_STATE_CONNECTING && (mask & AE_WRITABLE) && conn->conn_handler) { - if (connGetSocketError(conn)) { - conn->last_errno = errno; + int conn_error = connGetSocketError(conn); + if (conn_error) { + conn->last_errno = conn_error; conn->state = CONN_STATE_ERROR; } else { conn->state = CONN_STATE_CONNECTED; diff --git a/src/tls.c b/src/tls.c index 52887cd23..f55d25c78 100644 --- a/src/tls.c +++ b/src/tls.c @@ -464,8 +464,9 @@ static void tlsHandleEvent(tls_connection *conn, int mask) { switch (conn->c.state) { case CONN_STATE_CONNECTING: - if (connGetSocketError((connection *) conn)) { - conn->c.last_errno = errno; + int conn_error = connGetSocketError((connection *) conn); + if (conn_error) { + conn->c.last_errno = conn_error; conn->c.state = CONN_STATE_ERROR; } else { if (!(conn->flags & TLS_CONN_FLAG_FD_SET)) {