]> granicus.if.org Git - curl/commitdiff
this fix seems to make the connect fail properly even on IPv4-only Linux
authorDaniel Stenberg <daniel@haxx.se>
Thu, 22 Nov 2001 13:57:00 +0000 (13:57 +0000)
committerDaniel Stenberg <daniel@haxx.se>
Thu, 22 Nov 2001 13:57:00 +0000 (13:57 +0000)
machines!

lib/connect.c

index 274f7b1e1e010c006620f21fb3e07385036be94e..277e1dfaee98d647dfc7877b14079d33e25985d2 100644 (file)
@@ -309,9 +309,8 @@ static CURLcode bindlocal(struct connectdata *conn,
 
   return CURLE_HTTP_PORT_FAILED;
 }
-#else /* end of ipv4-specific section */
+#endif /* end of ipv4-specific section */
 
-/* we only use socketerror() on IPv6-enabled machines */
 static
 int socketerror(int sockfd)
 {
@@ -324,7 +323,6 @@ int socketerror(int sockfd)
   
   return err;
 }
-#endif
 
 /*
  * TCP connect to the given host with timeout, proxy or remote doesn't matter.
@@ -525,6 +523,16 @@ CURLcode Curl_connecthost(struct connectdata *conn,  /* context */
       }
     }
 
+    if(0 == rc) {
+      int err = socketerror(sockfd);
+      if ((0 == err) || (EISCONN == err)) {
+        /* we are connected, awesome! */
+        break;
+      }
+      /* nope, not connected for real */
+      rc = -1;
+    }
+
     if(0 != rc) {
       /* get a new timeout for next attempt */
       after = Curl_tvnow();