diff --git a/src/sbbs3/js_socket.c b/src/sbbs3/js_socket.c index c14256699c9143e89c62e2e854ed16e993aacbce..908c535dea5ef45dc3730dfdde30b26d3c9484fa 100644 --- a/src/sbbs3/js_socket.c +++ b/src/sbbs3/js_socket.c @@ -1,4 +1,5 @@ /* Synchronet JavaScript "Socket" Object */ +// vi: tabstop=4 /* $Id$ */ @@ -789,8 +790,12 @@ js_connect(JSContext *cx, uintN argc, jsval *arglist) && (ERROR_VALUE==EWOULDBLOCK || ERROR_VALUE==EINPROGRESS)) { FD_ZERO(&socket_set); FD_SET(p->sock,&socket_set); - if(select(p->sock+1,NULL,&socket_set,NULL,&tv)==1) - result=0; /* success */ + if(select(p->sock+1,NULL,&socket_set,NULL,&tv)==1) { + int so_error = -1; + socklen_t optlen = sizeof(so_error); + if(getsockopt(p->sock, SOL_SOCKET, SO_ERROR, (void*)&so_error, &optlen) == 0 && so_error == 0) + result=0; /* success */ + } } if(result==0) break;