From 7d1f2ac7691c2d30eaf73ace2176ca1383b5f72b Mon Sep 17 00:00:00 2001 From: Tatsuhiro Tsujikawa Date: Thu, 20 Nov 2014 21:44:00 +0900 Subject: [PATCH] http: Disable pipelining for HTTP/2 and upgraded connections This commit disables pipelining for HTTP/2 or upgraded connections. For HTTP/2, we do not support multiplexing. In general, requests cannot be pipelined in an upgraded connection, since it is now different protocol. --- lib/http.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/lib/http.c b/lib/http.c index 76af6f702a719f..2e9fd7d716bb1a 100644 --- a/lib/http.c +++ b/lib/http.c @@ -3293,6 +3293,16 @@ CURLcode Curl_http_readwrite_headers(struct SessionHandle *data, infof(data, "HTTP 1.0, assume close after body\n"); connclose(conn, "HTTP/1.0 close after body"); } + else if(conn->httpversion == 20 || + (k->upgr101 == UPGR101_REQUESTED && k->httpcode == 101)) { + /* Don't enable pipelining for HTTP/2 or upgraded connection. For + HTTP/2, we do not support multiplexing. In general, requests + cannot be pipelined in upgraded connection, since it is now + different protocol. */ + DEBUGF(infof(data, + "HTTP 2 or upgraded connection do not support " + "pipelining for now\n")); + } else if(conn->httpversion >= 11 && !conn->bits.close) { struct connectbundle *cb_ptr;