mirror of
https://github.com/curl/curl.git
synced 2026-07-05 02:47:16 +03:00
This fixed yet another connect problem with the multi interface and ipv4
stack. Kjetil Jacobsen reported and verified the fix.
This commit is contained in:
parent
c94ba66310
commit
6f35ed51dc
1 changed files with 10 additions and 2 deletions
|
|
@ -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)) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue