aboutsummaryrefslogtreecommitdiff
path: root/lib/connect.c
diff options
context:
space:
mode:
authorDaniel Stenberg <daniel@haxx.se>2001-11-22 13:57:00 +0000
committerDaniel Stenberg <daniel@haxx.se>2001-11-22 13:57:00 +0000
commit0e7203be8981a58be17dce6eb100cd24d92c7042 (patch)
treea78f9f314ec0a66f842a5eadc69ef614090894e8 /lib/connect.c
parent52dbc96c32b51ff0a6958682a23c73e1f3bb7d6d (diff)
this fix seems to make the connect fail properly even on IPv4-only Linux
machines!
Diffstat (limited to 'lib/connect.c')
-rw-r--r--lib/connect.c14
1 files changed, 11 insertions, 3 deletions
diff --git a/lib/connect.c b/lib/connect.c
index 274f7b1e1..277e1dfae 100644
--- a/lib/connect.c
+++ b/lib/connect.c
@@ -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();