[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