[6.0] 8f2a0d4cc Clear bo->was_304 on return(retry)
Dridi Boukelmoune
dridi.boukelmoune at gmail.com
Thu Aug 16 08:53:06 UTC 2018
commit 8f2a0d4cc99c42229351c282e798080544883ed9
Author: Dag Haavi Finstad <daghf at varnish-software.com>
Date: Tue Jun 5 14:04:57 2018 +0200
Clear bo->was_304 on return(retry)
Fixes: #2700
Conflicts:
bin/varnishd/cache/cache_fetch.c
diff --git a/bin/varnishd/cache/cache_fetch.c b/bin/varnishd/cache/cache_fetch.c
index ee6091dab..6da9156b1 100644
--- a/bin/varnishd/cache/cache_fetch.c
+++ b/bin/varnishd/cache/cache_fetch.c
@@ -240,6 +240,7 @@ vbf_stp_retry(struct worker *wrk, struct busyobj *bo)
bo->storage = NULL;
bo->do_esi = 0;
bo->do_stream = 1;
+ bo->was_304 = 0;
// XXX: BereqEnd + BereqAcct ?
VSL_ChgId(bo->vsl, "bereq", "retry", VXID_Get(wrk, VSL_BACKENDMARKER));
diff --git a/bin/varnishtest/tests/r02700.vtc b/bin/varnishtest/tests/r02700.vtc
new file mode 100644
index 000000000..ca4598d21
--- /dev/null
+++ b/bin/varnishtest/tests/r02700.vtc
@@ -0,0 +1,47 @@
+varnishtest "#2700: IMS and return (retry)"
+
+server s1 {
+ rxreq
+ txresp -hdr {Etag: "foo"} -body "1"
+
+ rxreq
+ expect req.http.If-None-Match == {"foo"}
+ expect req.http.retries == "0"
+ txresp -status 304
+
+ rxreq
+ expect req.http.retries == "1"
+ expect req.http.If-None-Match == {"foo"}
+ txresp -status 304
+} -start
+
+
+varnish v1 -vcl+backend {
+ sub vcl_backend_fetch {
+ set bereq.http.retries = bereq.retries;
+ }
+ sub vcl_backend_response {
+ set beresp.ttl = 1ms;
+ set beresp.grace = 0s;
+ set beresp.keep = 1h;
+
+ if (beresp.was_304 && bereq.retries == 0) {
+ return (retry);
+ }
+
+ set beresp.http.was-304 = beresp.was_304;
+ }
+} -start
+
+client c1 {
+ txreq
+ rxresp
+ expect resp.status == 200
+ expect resp.http.was-304 == "false"
+
+ delay 0.1
+
+ txreq
+ rxresp
+ expect resp.http.was-304 == "true"
+} -run
More information about the varnish-commit
mailing list