mirror of https://github.com/moparisthebest/curl
conn->bits.tcpconnect now keeps track of if this connection is connected
or not
This commit is contained in:
parent
57572e550f
commit
b528bde470
|
@ -380,8 +380,8 @@ CURLcode Curl_is_connected(struct connectdata *conn,
|
||||||
return CURLE_OPERATION_TIMEOUTED;
|
return CURLE_OPERATION_TIMEOUTED;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(conn->protocol & PROT_FILE) {
|
if(conn->bits.tcpconnect) {
|
||||||
/* we are connected, awesome! */
|
/* we are connected already! */
|
||||||
*connected = TRUE;
|
*connected = TRUE;
|
||||||
return CURLE_OK;
|
return CURLE_OK;
|
||||||
}
|
}
|
||||||
|
|
16
lib/url.c
16
lib/url.c
|
@ -1677,6 +1677,12 @@ CURLcode Curl_protocol_connect(struct connectdata *conn,
|
||||||
struct SessionHandle *data = conn->data;
|
struct SessionHandle *data = conn->data;
|
||||||
CURLcode result=CURLE_OK;
|
CURLcode result=CURLE_OK;
|
||||||
|
|
||||||
|
if(conn->bits.tcpconnect)
|
||||||
|
/* We already are connected, get back. This may happen when the connect
|
||||||
|
worked fine in the first call, like when we connect to a local server
|
||||||
|
or proxy. */
|
||||||
|
return CURLE_OK;
|
||||||
|
|
||||||
Curl_pgrsTime(data, TIMER_CONNECT); /* connect done */
|
Curl_pgrsTime(data, TIMER_CONNECT); /* connect done */
|
||||||
|
|
||||||
if(data->set.verbose)
|
if(data->set.verbose)
|
||||||
|
@ -2299,6 +2305,7 @@ static CURLcode CreateConnection(struct SessionHandle *data,
|
||||||
|
|
||||||
/* Setup a "faked" transfer that'll do nothing */
|
/* Setup a "faked" transfer that'll do nothing */
|
||||||
if(CURLE_OK == result) {
|
if(CURLE_OK == result) {
|
||||||
|
conn->bits.tcpconnect = TRUE; /* we are "connected */
|
||||||
result = Curl_Transfer(conn, -1, -1, FALSE, NULL, /* no download */
|
result = Curl_Transfer(conn, -1, -1, FALSE, NULL, /* no download */
|
||||||
-1, NULL); /* no upload */
|
-1, NULL); /* no upload */
|
||||||
}
|
}
|
||||||
|
@ -2795,14 +2802,21 @@ static CURLcode CreateConnection(struct SessionHandle *data,
|
||||||
/* Connect only if not already connected! */
|
/* Connect only if not already connected! */
|
||||||
result = ConnectPlease(conn, hostaddr, &connected);
|
result = ConnectPlease(conn, hostaddr, &connected);
|
||||||
|
|
||||||
if(connected)
|
if(connected) {
|
||||||
result = Curl_protocol_connect(conn, hostaddr);
|
result = Curl_protocol_connect(conn, hostaddr);
|
||||||
|
if(CURLE_OK == result)
|
||||||
|
conn->bits.tcpconnect = TRUE;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
conn->bits.tcpconnect = FALSE;
|
||||||
|
|
||||||
|
|
||||||
if(CURLE_OK != result)
|
if(CURLE_OK != result)
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
Curl_pgrsTime(data, TIMER_CONNECT); /* we're connected already */
|
Curl_pgrsTime(data, TIMER_CONNECT); /* we're connected already */
|
||||||
|
conn->bits.tcpconnect = TRUE;
|
||||||
if(data->set.verbose)
|
if(data->set.verbose)
|
||||||
verboseconnect(conn, hostaddr);
|
verboseconnect(conn, hostaddr);
|
||||||
}
|
}
|
||||||
|
|
|
@ -243,6 +243,9 @@ struct ConnectBits {
|
||||||
bool forbidchunk; /* used only to explicitly forbid chunk-upload for
|
bool forbidchunk; /* used only to explicitly forbid chunk-upload for
|
||||||
specific upload buffers. See readmoredata() in
|
specific upload buffers. See readmoredata() in
|
||||||
http.c for details. */
|
http.c for details. */
|
||||||
|
bool tcpconnect; /* the tcp stream (or simimlar) is connected, this
|
||||||
|
is set the first time on the first connect function
|
||||||
|
call */
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
Loading…
Reference in New Issue