[master] dbbb1fb keep Content-Encoding intact if http_gzip_support is disabled
Nils Goroll
nils.goroll at uplex.de
Thu Mar 15 14:23:08 UTC 2018
commit dbbb1fb2eb2dcd155e9a09e4a4dcbe978a2db944
Author: Nils Goroll <nils.goroll at uplex.de>
Date: Thu Mar 15 15:17:31 2018 +0100
keep Content-Encoding intact if http_gzip_support is disabled
Fixes #2610
diff --git a/bin/varnishd/cache/cache_fetch.c b/bin/varnishd/cache/cache_fetch.c
index 69dcfcc..36b1c50 100644
--- a/bin/varnishd/cache/cache_fetch.c
+++ b/bin/varnishd/cache/cache_fetch.c
@@ -521,6 +521,11 @@ vbf_figure_out_vfp(struct busyobj *bo)
*
*/
+ if (! cache_param->http_gzip_support) {
+ bo->do_gzip = bo->do_gunzip = 0;
+ return (0);
+ }
+
if (http_GetStatus(bo->beresp) == 206) {
if (bo->do_esi) {
VSLb(bo->vsl, SLT_VCL_Error,
@@ -531,10 +536,9 @@ vbf_figure_out_vfp(struct busyobj *bo)
return (0);
}
- /* No body or no GZIP support -> done */
+ /* No body -> done */
if (bo->htc->body_status == BS_NONE ||
- bo->htc->content_length == 0 ||
- !cache_param->http_gzip_support) {
+ bo->htc->content_length == 0) {
http_Unset(bo->beresp, H_Content_Encoding);
bo->do_gzip = bo->do_gunzip = 0;
bo->do_stream = 0;
diff --git a/bin/varnishtest/tests/g00003.vtc b/bin/varnishtest/tests/g00003.vtc
index ee032e3..1ba77ba 100644
--- a/bin/varnishtest/tests/g00003.vtc
+++ b/bin/varnishtest/tests/g00003.vtc
@@ -15,6 +15,18 @@ server s1 {
expect req.url == "/foobar"
expect req.http.accept-encoding == "gzip"
txresp -bodylen 43
+
+ rxreq
+ expect req.url == "/nogzip"
+ expect req.http.accept-encoding == "gzip"
+ txresp -hdr "Vary: Accept-Encoding" \
+ -gzipbody "keep gzip real"
+
+ rxreq
+ expect req.url == "/nogzip"
+ expect req.http.accept-encoding == <undef>
+ txresp -hdr "Vary: Accept-Encoding" \
+ -body "keep plain real"
} -start
varnish v1 -cliok "param.set http_gzip_support true" -vcl+backend {
@@ -53,3 +65,18 @@ client c1 {
varnish v1 -expect n_gzip == 1
varnish v1 -expect n_gunzip == 2
varnish v1 -expect n_test_gunzip == 0
+
+varnish v1 -cliok "param.set http_gzip_support false"
+
+client c1 {
+ txreq -url /nogzip -hdr "Accept-Encoding: gzip"
+ rxresp
+ expect resp.http.content-encoding == "gzip"
+ gunzip
+ expect resp.body == "keep gzip real"
+
+ txreq -url /nogzip
+ rxresp
+ expect resp.http.content-encoding == <undef>
+ expect resp.body == "keep plain real"
+} -run
More information about the varnish-commit
mailing list