mirror of
https://github.com/moparisthebest/curl
synced 2024-12-21 23:58:49 -05:00
http2: rely on content-encoding header
A server might respond with a content-encoding header and a response that was encoded accordingly in HTTP-draft-09/2.0 mode, even if the client did not send an accept-encoding header earlier. The server might not send a content-encoding header if the identity encoding was used to encode the response. See: http://tools.ietf.org/html/draft-ietf-httpbis-http2-09#section-9.3
This commit is contained in:
parent
ff0547e70e
commit
133cdd29ea
@ -3402,7 +3402,8 @@ CURLcode Curl_http_readwrite_headers(struct SessionHandle *data,
|
|||||||
|
|
||||||
}
|
}
|
||||||
else if(checkprefix("Content-Encoding:", k->p) &&
|
else if(checkprefix("Content-Encoding:", k->p) &&
|
||||||
data->set.str[STRING_ENCODING]) {
|
(data->set.str[STRING_ENCODING] ||
|
||||||
|
conn->httpversion == 20)) {
|
||||||
/*
|
/*
|
||||||
* Process Content-Encoding. Look for the values: identity,
|
* Process Content-Encoding. Look for the values: identity,
|
||||||
* gzip, deflate, compress, x-gzip and x-compress. x-gzip and
|
* gzip, deflate, compress, x-gzip and x-compress. x-gzip and
|
||||||
|
@ -410,7 +410,6 @@ CURLcode Curl_http2_request_upgrade(Curl_send_buffer *req,
|
|||||||
free(base64);
|
free(base64);
|
||||||
|
|
||||||
k->upgr101 = UPGR101_REQUESTED;
|
k->upgr101 = UPGR101_REQUESTED;
|
||||||
k->auto_decoding = GZIP;
|
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
@ -641,7 +640,7 @@ int Curl_http2_switched(struct connectdata *conn)
|
|||||||
httpc->data = NULL;
|
httpc->data = NULL;
|
||||||
httpc->datalen = 0;
|
httpc->datalen = 0;
|
||||||
|
|
||||||
conn->data->req.auto_decoding = GZIP;
|
conn->httpversion = 20;
|
||||||
|
|
||||||
/* Put place holder for status line */
|
/* Put place holder for status line */
|
||||||
Curl_add_buffer(httpc->header_recvbuf, "HTTP/2.0 200\r\n", 14);
|
Curl_add_buffer(httpc->header_recvbuf, "HTTP/2.0 200\r\n", 14);
|
||||||
|
Loading…
Reference in New Issue
Block a user