aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Stenberg <daniel@haxx.se>2003-01-09 14:52:51 +0000
committerDaniel Stenberg <daniel@haxx.se>2003-01-09 14:52:51 +0000
commit6f35ed51dc63ddeeda3a32794b391ba841fe5caa (patch)
tree19110403e32e720ee16c96559478982211898590
parentc94ba6631014f76ac91373ea98ff00268dc37f89 (diff)
This fixed yet another connect problem with the multi interface and ipv4
stack. Kjetil Jacobsen reported and verified the fix.
-rw-r--r--lib/connect.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/lib/connect.c b/lib/connect.c
index 2c85dc157..d3c65b4dc 100644
--- a/lib/connect.c
+++ b/lib/connect.c
@@ -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)) {