]> granicus.if.org Git - curl/commitdiff
connect: Fixed "Whut?" no server connection failures
authorSteve Holme <steve_holme@hotmail.com>
Sun, 3 Nov 2013 11:27:12 +0000 (11:27 +0000)
committerSteve Holme <steve_holme@hotmail.com>
Sun, 3 Nov 2013 11:27:12 +0000 (11:27 +0000)
Introduced in commit 7d7df831981fee curl would loop displaying "Whut?"
if it was trying to connect to an address and port that didn't have
anything listening on it.

lib/connect.c

index 2cf1fc05175bc8483d76fe415c436a4332503782..fe41fd128c492b2522d5b8fbb8b462a16cd00f46 100644 (file)
@@ -742,16 +742,14 @@ CURLcode Curl_is_connected(struct connectdata *conn,
     /* check socket for connect */
     result = Curl_socket_ready(CURL_SOCKET_BAD, conn->tempsock[i], 0);
 
-    switch(result) {
-    case 0: /* no connection yet */
+    if(result == 0) { /* no connection yet */
       if(curlx_tvdiff(now, conn->connecttime) >= conn->timeoutms_per_addr) {
         infof(data, "After %ldms connect time, move on!\n",
               conn->timeoutms_per_addr);
         error = ETIMEDOUT;
       }
-      break;
-
-    case CURL_CSELECT_OUT:
+    }
+    else if(result == CURL_CSELECT_OUT) {
       if(verifyconnect(conn->tempsock[i], &error)) {
         /* we are connected with TCP, awesome! */
         int other = i ^ 1;
@@ -786,16 +784,9 @@ CURLcode Curl_is_connected(struct connectdata *conn,
       }
       else
         infof(data, "Connection failed\n");
-      break;
-
-    case CURL_CSELECT_ERR|CURL_CSELECT_OUT:
-      (void)verifyconnect(conn->tempsock[i], &error);
-      break;
-
-    default:
-      infof(data, "Whut?\n");
-      return CURLE_OK;
     }
+    else if((result & CURL_CSELECT_ERR) == CURL_CSELECT_ERR)
+      (void)verifyconnect(conn->tempsock[i], &error);
 
     /*
      * The connection failed here, we should attempt to connect to the "next
@@ -821,6 +812,7 @@ CURLcode Curl_is_connected(struct connectdata *conn,
     failf(data, "Failed to connect to %s port %ld: %s",
           conn->host.name, conn->port, Curl_strerror(conn, error));
   }
+
   return code;
 }