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;