--- a/src/libwaitress/waitress.c
+++ b/src/libwaitress/waitress.c
@@ -805,34 +805,37 @@ static WaitressReturn_t WaitressConnect
 			int pollres;
 
 			/* we need shorter timeouts for connect() */
-			fcntl (sock, F_SETFL, O_NONBLOCK);
+			pollres = fcntl (sock, F_SETFL, O_NONBLOCK);
+			assert (pollres != -1);
 
-			/* increase socket receive buffer */
-			const int sockopt = 256*1024;
-			setsockopt (sock, SOL_SOCKET, SO_RCVBUF, &sockopt,
-					sizeof (sockopt));
-
-			/* non-blocking connect will return immediately */
-			connect (sock, gacurr->ai_addr, gacurr->ai_addrlen);
-
-			pollres = WaitressPollLoop (sock, POLLOUT, waith->timeout);
-			if (pollres == 0) {
-				ret = WAITRESS_RET_TIMEOUT;
-			} else if (pollres == -1) {
-				ret = WAITRESS_RET_ERR;
-			} else {
-				/* check connect () return value */
-				socklen_t pollresSize = sizeof (pollres);
-				getsockopt (sock, SOL_SOCKET, SO_ERROR, &pollres,
-						&pollresSize);
-				if (pollres != 0) {
-					ret = WAITRESS_RET_CONNECT_REFUSED;
+			if (connect (sock, gacurr->ai_addr, gacurr->ai_addrlen) != -1) {
+				/* working */
+				waith->request.sockfd = sock;
+				break;
+			} else if (errno == EINPROGRESS) {
+				/* wait for connect to succeed */
+				pollres = WaitressPollLoop (sock, POLLOUT, waith->timeout);
+				if (pollres == 0) {
+					ret = WAITRESS_RET_TIMEOUT;
+				} else if (pollres == -1) {
+					ret = WAITRESS_RET_ERR;
 				} else {
-					/* this one is working */
-					waith->request.sockfd = sock;
-					break;
+					/* check connect () return value */
+					socklen_t pollresSize = sizeof (pollres);
+					getsockopt (sock, SOL_SOCKET, SO_ERROR, &pollres,
+							&pollresSize);
+					if (pollres != 0) {
+						ret = WAITRESS_RET_CONNECT_REFUSED;
+					} else {
+						/* this one is working */
+						waith->request.sockfd = sock;
+						break;
+					}
 				}
+			} else {
+				ret = WAITRESS_RET_ERR;
 			}
+
 			close (sock);
 		}
 	}
--- a/src/libfootball/fb_service.c
+++ b/src/libfootball/fb_service.c
@@ -111,6 +111,8 @@ static bool fb_setup_socket (FB_SERVICE
 		service->socket [which] = 0;
 	} else {
         fb_perror ("socket");
+        // Element must be zero (not -1)
+        service->socket [which] = 0;
 	};
 	return false;
 }
