From 68f55f5b8524b1bc2abc75e5c1f36810351c7075 Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Mon, 19 Jun 2017 09:38:19 -0600 Subject: [PATCH] rktio: fix success check for `connect` --- racket/src/rktio/rktio_network.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/racket/src/rktio/rktio_network.c b/racket/src/rktio/rktio_network.c index e3bd8ebeaf..43dfc5bcf5 100644 --- a/racket/src/rktio/rktio_network.c +++ b/racket/src/rktio/rktio_network.c @@ -1238,12 +1238,13 @@ rktio_fd_t *rktio_connect_finish(rktio_t *rktio, rktio_connect_t *conn) if (conn->inprogress) { /* Check whether connect succeeded, or get error: */ int errid; - rktio_sockopt_len_t so_len = sizeof(errid); + unsigned status; + rktio_sockopt_len_t so_len = sizeof(status); rktio_socket_t s = rktio_fd_socket(rktio, rfd); - if (getsockopt(s, SOL_SOCKET, SO_ERROR, (void *)&errid, &so_len) != 0) { + if (getsockopt(s, SOL_SOCKET, SO_ERROR, (void *)&status, &so_len) != 0) { errid = SOCK_ERRNO(); } else - errid = 0; + errid = status; #ifdef RKTIO_SYSTEM_WINDOWS if (!rktio->windows_nt_or_later && !errid) { /* getsockopt() seems not to work in Windows 95, so use the