c-hyper: handle HTTP/1.1 => HTTP/1.0 downgrade on reused connection
Enable test 1074 Closes #7617
This commit is contained in:
Родитель
38941ad6f3
Коммит
e5d77dc2ca
|
@ -257,6 +257,9 @@ static CURLcode status_line(struct Curl_easy *data,
|
|||
conn->httpversion =
|
||||
http_version == HYPER_HTTP_VERSION_1_1 ? 11 :
|
||||
(http_version == HYPER_HTTP_VERSION_2 ? 20 : 10);
|
||||
if(http_version == HYPER_HTTP_VERSION_1_0)
|
||||
data->state.httpwant = CURL_HTTP_VERSION_1_0;
|
||||
|
||||
data->req.httpcode = http_status;
|
||||
|
||||
result = Curl_http_statusline(data, conn);
|
||||
|
@ -900,7 +903,7 @@ CURLcode Curl_http(struct Curl_easy *data, bool *done)
|
|||
goto error;
|
||||
}
|
||||
|
||||
if(data->state.httpwant == CURL_HTTP_VERSION_1_0) {
|
||||
if(!Curl_use_http_1_1plus(data, conn)) {
|
||||
if(HYPERE_OK != hyper_request_set_version(req,
|
||||
HYPER_HTTP_VERSION_1_0)) {
|
||||
failf(data, "error setting HTTP version");
|
||||
|
|
10
lib/http.c
10
lib/http.c
|
@ -1669,8 +1669,8 @@ CURLcode Curl_http_done(struct Curl_easy *data,
|
|||
* - if any server previously contacted to handle this request only supports
|
||||
* 1.0.
|
||||
*/
|
||||
static bool use_http_1_1plus(const struct Curl_easy *data,
|
||||
const struct connectdata *conn)
|
||||
bool Curl_use_http_1_1plus(const struct Curl_easy *data,
|
||||
const struct connectdata *conn)
|
||||
{
|
||||
if((data->state.httpversion == 10) || (conn->httpversion == 10))
|
||||
return FALSE;
|
||||
|
@ -1696,7 +1696,7 @@ static const char *get_http_string(const struct Curl_easy *data,
|
|||
return "2";
|
||||
#endif
|
||||
|
||||
if(use_http_1_1plus(data, conn))
|
||||
if(Curl_use_http_1_1plus(data, conn))
|
||||
return "1.1";
|
||||
|
||||
return "1.0";
|
||||
|
@ -1711,7 +1711,7 @@ static CURLcode expect100(struct Curl_easy *data,
|
|||
CURLcode result = CURLE_OK;
|
||||
data->state.expect100header = FALSE; /* default to false unless it is set
|
||||
to TRUE below */
|
||||
if(!data->state.disableexpect && use_http_1_1plus(data, conn) &&
|
||||
if(!data->state.disableexpect && Curl_use_http_1_1plus(data, conn) &&
|
||||
(conn->httpversion < 20)) {
|
||||
/* if not doing HTTP 1.0 or version 2, or disabled explicitly, we add an
|
||||
Expect: 100-continue to the headers which actually speeds up post
|
||||
|
@ -2348,7 +2348,7 @@ CURLcode Curl_http_body(struct Curl_easy *data, struct connectdata *conn,
|
|||
if(conn->bits.authneg)
|
||||
/* don't enable chunked during auth neg */
|
||||
;
|
||||
else if(use_http_1_1plus(data, conn)) {
|
||||
else if(Curl_use_http_1_1plus(data, conn)) {
|
||||
if(conn->httpversion < 20)
|
||||
/* HTTP, upload, unknown file size and not HTTP 1.0 */
|
||||
data->req.upload_chunky = TRUE;
|
||||
|
|
|
@ -99,6 +99,8 @@ CURLcode Curl_http_body(struct Curl_easy *data, struct connectdata *conn,
|
|||
const char **teep);
|
||||
CURLcode Curl_http_bodysend(struct Curl_easy *data, struct connectdata *conn,
|
||||
struct dynbuf *r, Curl_HttpReq httpreq);
|
||||
bool Curl_use_http_1_1plus(const struct Curl_easy *data,
|
||||
const struct connectdata *conn);
|
||||
#ifndef CURL_DISABLE_COOKIES
|
||||
CURLcode Curl_http_cookies(struct Curl_easy *data,
|
||||
struct connectdata *conn,
|
||||
|
|
|
@ -71,7 +71,6 @@
|
|||
1061
|
||||
1070
|
||||
1071
|
||||
1074
|
||||
1077
|
||||
1078
|
||||
1122
|
||||
|
|
Загрузка…
Ссылка в новой задаче