mirror of
https://github.com/moparisthebest/curl
synced 2024-12-21 23:58:49 -05:00
http: switch on "pipelining" (multiplexing) for HTTP/2 servers
... and do not blacklist any.
This commit is contained in:
parent
5fa82ca56f
commit
6e6b02f398
27
lib/http.c
27
lib/http.c
@ -3332,13 +3332,11 @@ CURLcode Curl_http_readwrite_headers(struct SessionHandle *data,
|
|||||||
}
|
}
|
||||||
else if(conn->httpversion == 20 ||
|
else if(conn->httpversion == 20 ||
|
||||||
(k->upgr101 == UPGR101_REQUESTED && k->httpcode == 101)) {
|
(k->upgr101 == UPGR101_REQUESTED && k->httpcode == 101)) {
|
||||||
/* Don't enable pipelining for HTTP/2 or upgraded connection. For
|
DEBUGF(infof(data, "HTTP/2 found, allow multiplexing\n"));
|
||||||
HTTP/2, we do not support multiplexing. In general, requests
|
|
||||||
cannot be pipelined in upgraded connection, since it is now
|
/* HTTP/2 cannot blacklist multiplexing since it is a core
|
||||||
different protocol. */
|
functionality of the protocol */
|
||||||
DEBUGF(infof(data,
|
conn->bundle->server_supports_pipelining = TRUE;
|
||||||
"HTTP 2 or upgraded connection do not support "
|
|
||||||
"pipelining for now\n"));
|
|
||||||
}
|
}
|
||||||
else if(conn->httpversion >= 11 &&
|
else if(conn->httpversion >= 11 &&
|
||||||
!conn->bits.close) {
|
!conn->bits.close) {
|
||||||
@ -3432,14 +3430,17 @@ CURLcode Curl_http_readwrite_headers(struct SessionHandle *data,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if(checkprefix("Server:", k->p)) {
|
else if(checkprefix("Server:", k->p)) {
|
||||||
char *server_name = Curl_copy_header_value(k->p);
|
if(conn->httpversion < 20) {
|
||||||
|
/* only do this for non-h2 servers */
|
||||||
|
char *server_name = Curl_copy_header_value(k->p);
|
||||||
|
|
||||||
/* Turn off pipelining if the server version is blacklisted */
|
/* Turn off pipelining if the server version is blacklisted */
|
||||||
if(conn->bundle && conn->bundle->server_supports_pipelining) {
|
if(conn->bundle && conn->bundle->server_supports_pipelining) {
|
||||||
if(Curl_pipeline_server_blacklisted(data, server_name))
|
if(Curl_pipeline_server_blacklisted(data, server_name))
|
||||||
conn->bundle->server_supports_pipelining = FALSE;
|
conn->bundle->server_supports_pipelining = FALSE;
|
||||||
|
}
|
||||||
|
free(server_name);
|
||||||
}
|
}
|
||||||
free(server_name);
|
|
||||||
}
|
}
|
||||||
else if((conn->httpversion == 10) &&
|
else if((conn->httpversion == 10) &&
|
||||||
conn->bits.httpproxy &&
|
conn->bits.httpproxy &&
|
||||||
|
Loading…
Reference in New Issue
Block a user