mirror of
https://github.com/curl/curl.git
synced 2025-02-17 14:59:45 +08:00
content_encoding: only do tranfer-encoding compression if asked to
To reduce surprises. Update test 387 and 418 accordingly. Closes #10899
This commit is contained in:
parent
3de6b6cfe5
commit
4033642930
@ -53,6 +53,9 @@
|
||||
#include "content_encoding.h"
|
||||
#include "strdup.h"
|
||||
#include "strcase.h"
|
||||
|
||||
/* The last 3 #include files should be in this order */
|
||||
#include "curl_printf.h"
|
||||
#include "curl_memory.h"
|
||||
#include "memdebug.h"
|
||||
|
||||
@ -1077,8 +1080,12 @@ CURLcode Curl_build_unencoding_stack(struct Curl_easy *data,
|
||||
Curl_httpchunk_init(data); /* init our chunky engine. */
|
||||
}
|
||||
else if(namelen) {
|
||||
const struct content_encoding *encoding = find_encoding(name, namelen);
|
||||
const struct content_encoding *encoding;
|
||||
struct contenc_writer *writer;
|
||||
if(is_transfer && !data->set.http_transfer_encoding)
|
||||
/* not requested, ignore */
|
||||
return CURLE_OK;
|
||||
encoding = find_encoding(name, namelen);
|
||||
|
||||
if(!k->writer_stack) {
|
||||
k->writer_stack = new_unencoding_writer(data, &client_encoding,
|
||||
|
@ -3572,7 +3572,7 @@ CURLcode Curl_http_header(struct Curl_easy *data, struct connectdata *conn,
|
||||
TRUE);
|
||||
if(result)
|
||||
return result;
|
||||
if(!k->chunk) {
|
||||
if(!k->chunk && data->set.http_transfer_encoding) {
|
||||
/* if this isn't chunked, only close can signal the end of this transfer
|
||||
as Content-Length is said not to be trusted for transfer-encoding! */
|
||||
connclose(conn, "HTTP/1.1 transfer-encoding without chunks");
|
||||
|
@ -9,10 +9,11 @@ gzip
|
||||
#
|
||||
# Server-side
|
||||
<reply>
|
||||
<data nocheck="yes">
|
||||
HTTP/1.1 200 OK
|
||||
Transfer-Encoding: gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip
|
||||
|
||||
<data nocheck="yes" crlf="yes">
|
||||
HTTP/1.1 200 OK
|
||||
Content-Length: 6
|
||||
Transfer-Encoding: gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip
|
||||
|
||||
-foo-
|
||||
</data>
|
||||
</reply>
|
||||
@ -23,11 +24,14 @@ Transfer-Encoding: gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,g
|
||||
<server>
|
||||
http
|
||||
</server>
|
||||
<name>
|
||||
<features>
|
||||
libz
|
||||
</features>
|
||||
<name>
|
||||
Response with overly long compression chain
|
||||
</name>
|
||||
<command>
|
||||
http://%HOSTIP:%HTTPPORT/%TESTNUMBER -sS
|
||||
</name>
|
||||
<command>
|
||||
http://%HOSTIP:%HTTPPORT/%TESTNUMBER -sS --tr-encoding
|
||||
</command>
|
||||
</client>
|
||||
|
||||
@ -39,6 +43,8 @@ GET /%TESTNUMBER HTTP/1.1
|
||||
Host: %HOSTIP:%HTTPPORT
|
||||
User-Agent: curl/%VERSION
|
||||
Accept: */*
|
||||
Connection: TE
|
||||
TE: gzip
|
||||
|
||||
</protocol>
|
||||
|
||||
|
@ -10,98 +10,8 @@ gzip
|
||||
# Server-side
|
||||
<reply>
|
||||
<data nocheck="yes">
|
||||
HTTP/1.1 200 OK
|
||||
Transfer-Encoding: gzip
|
||||
Transfer-Encoding: gzip
|
||||
Transfer-Encoding: gzip
|
||||
Transfer-Encoding: gzip
|
||||
Transfer-Encoding: gzip
|
||||
Transfer-Encoding: gzip
|
||||
Transfer-Encoding: gzip
|
||||
Transfer-Encoding: gzip
|
||||
Transfer-Encoding: gzip
|
||||
Transfer-Encoding: gzip
|
||||
Transfer-Encoding: gzip
|
||||
Transfer-Encoding: gzip
|
||||
Transfer-Encoding: gzip
|
||||
Transfer-Encoding: gzip
|
||||
Transfer-Encoding: gzip
|
||||
Transfer-Encoding: gzip
|
||||
Transfer-Encoding: gzip
|
||||
Transfer-Encoding: gzip
|
||||
Transfer-Encoding: gzip
|
||||
Transfer-Encoding: gzip
|
||||
Transfer-Encoding: gzip
|
||||
Transfer-Encoding: gzip
|
||||
Transfer-Encoding: gzip
|
||||
Transfer-Encoding: gzip
|
||||
Transfer-Encoding: gzip
|
||||
Transfer-Encoding: gzip
|
||||
Transfer-Encoding: gzip
|
||||
Transfer-Encoding: gzip
|
||||
Transfer-Encoding: gzip
|
||||
Transfer-Encoding: gzip
|
||||
Transfer-Encoding: gzip
|
||||
Transfer-Encoding: gzip
|
||||
Transfer-Encoding: gzip
|
||||
Transfer-Encoding: gzip
|
||||
Transfer-Encoding: gzip
|
||||
Transfer-Encoding: gzip
|
||||
Transfer-Encoding: gzip
|
||||
Transfer-Encoding: gzip
|
||||
Transfer-Encoding: gzip
|
||||
Transfer-Encoding: gzip
|
||||
Transfer-Encoding: gzip
|
||||
Transfer-Encoding: gzip
|
||||
Transfer-Encoding: gzip
|
||||
Transfer-Encoding: gzip
|
||||
Transfer-Encoding: gzip
|
||||
Transfer-Encoding: gzip
|
||||
Transfer-Encoding: gzip
|
||||
Transfer-Encoding: gzip
|
||||
Transfer-Encoding: gzip
|
||||
Transfer-Encoding: gzip
|
||||
Transfer-Encoding: gzip
|
||||
Transfer-Encoding: gzip
|
||||
Transfer-Encoding: gzip
|
||||
Transfer-Encoding: gzip
|
||||
Transfer-Encoding: gzip
|
||||
Transfer-Encoding: gzip
|
||||
Transfer-Encoding: gzip
|
||||
Transfer-Encoding: gzip
|
||||
Transfer-Encoding: gzip
|
||||
Transfer-Encoding: gzip
|
||||
Transfer-Encoding: gzip
|
||||
Transfer-Encoding: gzip
|
||||
Transfer-Encoding: gzip
|
||||
Transfer-Encoding: gzip
|
||||
Transfer-Encoding: gzip
|
||||
Transfer-Encoding: gzip
|
||||
Transfer-Encoding: gzip
|
||||
Transfer-Encoding: gzip
|
||||
Transfer-Encoding: gzip
|
||||
Transfer-Encoding: gzip
|
||||
Transfer-Encoding: gzip
|
||||
Transfer-Encoding: gzip
|
||||
Transfer-Encoding: gzip
|
||||
Transfer-Encoding: gzip
|
||||
Transfer-Encoding: gzip
|
||||
Transfer-Encoding: gzip
|
||||
Transfer-Encoding: gzip
|
||||
Transfer-Encoding: gzip
|
||||
Transfer-Encoding: gzip
|
||||
Transfer-Encoding: gzip
|
||||
Transfer-Encoding: gzip
|
||||
Transfer-Encoding: gzip
|
||||
Transfer-Encoding: gzip
|
||||
Transfer-Encoding: gzip
|
||||
Transfer-Encoding: gzip
|
||||
Transfer-Encoding: gzip
|
||||
Transfer-Encoding: gzip
|
||||
Transfer-Encoding: gzip
|
||||
Transfer-Encoding: gzip
|
||||
Transfer-Encoding: gzip
|
||||
Transfer-Encoding: gzip
|
||||
HTTP/1.1 200 swsclose OK
|
||||
Content-Length: 6
|
||||
Transfer-Encoding: gzip
|
||||
Transfer-Encoding: gzip
|
||||
Transfer-Encoding: gzip
|
||||
@ -122,11 +32,14 @@ Transfer-Encoding: gzip
|
||||
<server>
|
||||
http
|
||||
</server>
|
||||
<name>
|
||||
<features>
|
||||
libz
|
||||
</features>
|
||||
<name>
|
||||
Response with multiple Transfer-Encoding headers
|
||||
</name>
|
||||
<command>
|
||||
http://%HOSTIP:%HTTPPORT/%TESTNUMBER -sS
|
||||
</name>
|
||||
<command>
|
||||
http://%HOSTIP:%HTTPPORT/%TESTNUMBER -sS --tr-encoding
|
||||
</command>
|
||||
</client>
|
||||
|
||||
@ -138,6 +51,8 @@ GET /%TESTNUMBER HTTP/1.1
|
||||
Host: %HOSTIP:%HTTPPORT
|
||||
User-Agent: curl/%VERSION
|
||||
Accept: */*
|
||||
Connection: TE
|
||||
TE: gzip
|
||||
|
||||
</protocol>
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user