summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJay Satiro <raysatiro@yahoo.com>2019-04-12 18:57:53 -0400
committerJay Satiro <raysatiro@yahoo.com>2019-09-26 03:04:26 -0400
commitcded9937007a1cad58dc66b62109b27d70b69b90 (patch)
tree9699f3d9b411b783e7f4e10079abc4ba5890f3bc
parent217812fa9ec9417edbcafae90ec50402faacba96 (diff)
downloadcurl-cded9937007a1cad58dc66b62109b27d70b69b90.tar.gz
url: don't set appconnect time for non-ssl/non-ssh connections
Prior to this change non-ssl/non-ssh connections that were reused set TIMER_APPCONNECT [1]. Arguably that was incorrect since no SSL/SSH handshake took place. [1]: TIMER_APPCONNECT is publicly known as CURLINFO_APPCONNECT_TIME in libcurl and %{time_appconnect} in the curl tool. It is documented as "the time until the SSL/SSH handshake is completed". Reported-by: Marcel Hernandez Ref: https://github.com/curl/curl/issues/3760 Closes https://github.com/curl/curl/pull/3773
-rw-r--r--lib/url.c4
-rw-r--r--lib/urldata.h1
2 files changed, 4 insertions, 1 deletions
diff --git a/lib/url.c b/lib/url.c
index 14e6e2625..031f8f0c4 100644
--- a/lib/url.c
+++ b/lib/url.c
@@ -3815,7 +3815,9 @@ CURLcode Curl_setup_conn(struct connectdata *conn,
}
else {
Curl_pgrsTime(data, TIMER_CONNECT); /* we're connected already */
- Curl_pgrsTime(data, TIMER_APPCONNECT); /* we're connected already */
+ if(conn->ssl[FIRSTSOCKET].use ||
+ (conn->handler->protocol & PROTO_FAMILY_SSH))
+ Curl_pgrsTime(data, TIMER_APPCONNECT); /* we're connected already */
conn->bits.tcpconnect[FIRSTSOCKET] = TRUE;
*protocol_done = TRUE;
Curl_updateconninfo(conn, conn->sock[FIRSTSOCKET]);
diff --git a/lib/urldata.h b/lib/urldata.h
index 310d93d18..2700bc2a6 100644
--- a/lib/urldata.h
+++ b/lib/urldata.h
@@ -68,6 +68,7 @@
#define PROTO_FAMILY_POP3 (CURLPROTO_POP3|CURLPROTO_POP3S)
#define PROTO_FAMILY_SMB (CURLPROTO_SMB|CURLPROTO_SMBS)
#define PROTO_FAMILY_SMTP (CURLPROTO_SMTP|CURLPROTO_SMTPS)
+#define PROTO_FAMILY_SSH (CURLPROTO_SCP|CURLPROTO_SFTP)
#define DEFAULT_CONNCACHE_SIZE 5