mirror of
https://github.com/curl/curl.git
synced 2025-09-16 00:52:42 +03: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 "content_encoding.h"
|
||||||
#include "strdup.h"
|
#include "strdup.h"
|
||||||
#include "strcase.h"
|
#include "strcase.h"
|
||||||
|
|
||||||
|
/* The last 3 #include files should be in this order */
|
||||||
|
#include "curl_printf.h"
|
||||||
#include "curl_memory.h"
|
#include "curl_memory.h"
|
||||||
#include "memdebug.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. */
|
Curl_httpchunk_init(data); /* init our chunky engine. */
|
||||||
}
|
}
|
||||||
else if(namelen) {
|
else if(namelen) {
|
||||||
const struct content_encoding *encoding = find_encoding(name, namelen);
|
const struct content_encoding *encoding;
|
||||||
struct contenc_writer *writer;
|
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) {
|
if(!k->writer_stack) {
|
||||||
k->writer_stack = new_unencoding_writer(data, &client_encoding,
|
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);
|
TRUE);
|
||||||
if(result)
|
if(result)
|
||||||
return 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
|
/* 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! */
|
as Content-Length is said not to be trusted for transfer-encoding! */
|
||||||
connclose(conn, "HTTP/1.1 transfer-encoding without chunks");
|
connclose(conn, "HTTP/1.1 transfer-encoding without chunks");
|
||||||
|
|
|
@ -9,8 +9,9 @@ gzip
|
||||||
#
|
#
|
||||||
# Server-side
|
# Server-side
|
||||||
<reply>
|
<reply>
|
||||||
<data nocheck="yes">
|
<data nocheck="yes" crlf="yes">
|
||||||
HTTP/1.1 200 OK
|
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
|
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-
|
-foo-
|
||||||
|
@ -23,11 +24,14 @@ Transfer-Encoding: gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,g
|
||||||
<server>
|
<server>
|
||||||
http
|
http
|
||||||
</server>
|
</server>
|
||||||
<name>
|
<features>
|
||||||
|
libz
|
||||||
|
</features>
|
||||||
|
<name>
|
||||||
Response with overly long compression chain
|
Response with overly long compression chain
|
||||||
</name>
|
</name>
|
||||||
<command>
|
<command>
|
||||||
http://%HOSTIP:%HTTPPORT/%TESTNUMBER -sS
|
http://%HOSTIP:%HTTPPORT/%TESTNUMBER -sS --tr-encoding
|
||||||
</command>
|
</command>
|
||||||
</client>
|
</client>
|
||||||
|
|
||||||
|
@ -39,6 +43,8 @@ GET /%TESTNUMBER HTTP/1.1
|
||||||
Host: %HOSTIP:%HTTPPORT
|
Host: %HOSTIP:%HTTPPORT
|
||||||
User-Agent: curl/%VERSION
|
User-Agent: curl/%VERSION
|
||||||
Accept: */*
|
Accept: */*
|
||||||
|
Connection: TE
|
||||||
|
TE: gzip
|
||||||
|
|
||||||
</protocol>
|
</protocol>
|
||||||
|
|
||||||
|
|
|
@ -10,98 +10,8 @@ gzip
|
||||||
# Server-side
|
# Server-side
|
||||||
<reply>
|
<reply>
|
||||||
<data nocheck="yes">
|
<data nocheck="yes">
|
||||||
HTTP/1.1 200 OK
|
HTTP/1.1 200 swsclose OK
|
||||||
Transfer-Encoding: gzip
|
Content-Length: 6
|
||||||
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
|
Transfer-Encoding: gzip
|
||||||
Transfer-Encoding: gzip
|
Transfer-Encoding: gzip
|
||||||
Transfer-Encoding: gzip
|
Transfer-Encoding: gzip
|
||||||
|
@ -122,11 +32,14 @@ Transfer-Encoding: gzip
|
||||||
<server>
|
<server>
|
||||||
http
|
http
|
||||||
</server>
|
</server>
|
||||||
<name>
|
<features>
|
||||||
|
libz
|
||||||
|
</features>
|
||||||
|
<name>
|
||||||
Response with multiple Transfer-Encoding headers
|
Response with multiple Transfer-Encoding headers
|
||||||
</name>
|
</name>
|
||||||
<command>
|
<command>
|
||||||
http://%HOSTIP:%HTTPPORT/%TESTNUMBER -sS
|
http://%HOSTIP:%HTTPPORT/%TESTNUMBER -sS --tr-encoding
|
||||||
</command>
|
</command>
|
||||||
</client>
|
</client>
|
||||||
|
|
||||||
|
@ -138,6 +51,8 @@ GET /%TESTNUMBER HTTP/1.1
|
||||||
Host: %HOSTIP:%HTTPPORT
|
Host: %HOSTIP:%HTTPPORT
|
||||||
User-Agent: curl/%VERSION
|
User-Agent: curl/%VERSION
|
||||||
Accept: */*
|
Accept: */*
|
||||||
|
Connection: TE
|
||||||
|
TE: gzip
|
||||||
|
|
||||||
</protocol>
|
</protocol>
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user