From b5901cab574aa673b0b7195be501ab9492b3832b Mon Sep 17 00:00:00 2001 From: Jay Satiro Date: Wed, 8 May 2019 03:39:53 -0400 Subject: http: Ignore HTTP/2 prior knowledge setting for HTTP proxies - Do not switch to HTTP/2 for an HTTP proxy that is not tunnelling to the destination host. We already do something similar for HTTPS proxies by not sending h2. [1] Prior to this change setting CURL_HTTP_VERSION_2_PRIOR_KNOWLEDGE would incorrectly use HTTP/2 to talk to the proxy, which is not something we support (yet?). Also it's debatable whether or not that setting should apply to HTTP/2 proxies. [1]: https://github.com/curl/curl/commit/17c5d05 Bug: https://github.com/curl/curl/issues/3570 Bug: https://github.com/curl/curl/issues/3832 Closes https://github.com/curl/curl/pull/3853 --- lib/http.c | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'lib/http.c') diff --git a/lib/http.c b/lib/http.c index 76a504b5a..b182844ff 100644 --- a/lib/http.c +++ b/lib/http.c @@ -1970,6 +1970,13 @@ CURLcode Curl_http(struct connectdata *conn, bool *done) #ifdef USE_NGHTTP2 if(conn->data->set.httpversion == CURL_HTTP_VERSION_2_PRIOR_KNOWLEDGE) { + if(conn->bits.httpproxy && !conn->bits.tunnel_proxy) { + /* We don't support HTTP/2 proxies yet. Also it's debatable whether + or not this setting should apply to HTTP/2 proxies. */ + infof(data, "Ignoring HTTP/2 prior knowledge due to proxy\n"); + break; + } + DEBUGF(infof(data, "HTTP/2 over clean TCP\n")); conn->httpversion = 20; -- cgit v1.2.3