]> granicus.if.org Git - curl/commitdiff
This fixed yet another connect problem with the multi interface and ipv4
authorDaniel Stenberg <daniel@haxx.se>
Thu, 9 Jan 2003 14:52:51 +0000 (14:52 +0000)
committerDaniel Stenberg <daniel@haxx.se>
Thu, 9 Jan 2003 14:52:51 +0000 (14:52 +0000)
stack. Kjetil Jacobsen reported and verified the fix.

lib/connect.c

index 2c85dc1570465c30b771069d57c9ad2c247f305c..d3c65b4dc8a02e15c7f6394bc5d909417efda301 100644 (file)
@@ -176,10 +176,9 @@ int waitconnect(int sockfd, /* socket */
     /* timeout, no connect today */
     return 1;
 
-  if(FD_ISSET(sockfd, &errfd)) {
+  if(FD_ISSET(sockfd, &errfd))
     /* error condition caught */
     return 2;
-  }
 
   /* we have a connect! */
   return 0;
@@ -651,6 +650,15 @@ CURLcode Curl_connecthost(struct connectdata *conn,  /* context */
       }
     }
 
+    /* The '1 == rc' comes from the waitconnect(), and not from connect().
+       We can be sure of this since connect() cannot return 1. */
+    if((1 == rc) && (data->state.used_interface == Curl_if_multi)) {
+      /* Timeout when running the multi interface, we return here with a
+         CURLE_OK return code. */
+      rc = 0;
+      break;
+    }
+
     if(0 == rc) {
       int err = socketerror(sockfd);
       if ((0 == err) || (EISCONN == err)) {