rktio: fix success check for connect

This commit is contained in:
Matthew Flatt 2017-06-19 09:38:19 -06:00
parent 54f16758a5
commit 68f55f5b85

View File

@ -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