url.c: fix endless loop upon transport connection timeout

Jerry Wu detected and provided detailed info about this issue.
This commit is contained in:
Yang Tse 2011-10-14 17:34:42 +02:00
parent fd10c047df
commit 1bab38780b

View File

@ -5073,7 +5073,7 @@ static CURLcode create_conn(struct SessionHandle *data,
CURLcode Curl_setup_conn(struct connectdata *conn, CURLcode Curl_setup_conn(struct connectdata *conn,
bool *protocol_done) bool *protocol_done)
{ {
CURLcode result=CURLE_OK; CURLcode result = CURLE_OK;
struct SessionHandle *data = conn->data; struct SessionHandle *data = conn->data;
Curl_pgrsTime(data, TIMER_NAMELOOKUP); Curl_pgrsTime(data, TIMER_NAMELOOKUP);
@ -5119,6 +5119,12 @@ CURLcode Curl_setup_conn(struct connectdata *conn,
result = ConnectPlease(data, conn, &connected); result = ConnectPlease(data, conn, &connected);
if(result && !conn->ip_addr) {
/* transport connection failure not related with authentication */
conn->bits.tcpconnect[FIRSTSOCKET] = FALSE;
return result;
}
if(connected) { if(connected) {
result = Curl_protocol_connect(conn, protocol_done); result = Curl_protocol_connect(conn, protocol_done);
if(CURLE_OK == result) if(CURLE_OK == result)