From cded9937007a1cad58dc66b62109b27d70b69b90 Mon Sep 17 00:00:00 2001 From: Jay Satiro Date: Fri, 12 Apr 2019 18:57:53 -0400 Subject: [PATCH] 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 --- lib/url.c | 4 +++- lib/urldata.h | 1 + 2 files changed, 4 insertions(+), 1 deletion(-) 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