[master] 20181dd Assign default storage for vcl_backend_error
Nils Goroll
nils.goroll at uplex.de
Wed Nov 15 13:41:06 UTC 2017
commit 20181ddd8632743d18d4ffa0f44dab70031f4c27
Author: Nils Goroll <nils.goroll at uplex.de>
Date: Wed Nov 15 14:30:56 2017 +0100
Assign default storage for vcl_backend_error
Creating "backend synthetic" content was impossible whenever a fetch
had already started, unless storage was assigned (again) explicitly
from VCL.
Fixes #2494
diff --git a/bin/varnishd/cache/cache_fetch.c b/bin/varnishd/cache/cache_fetch.c
index 9c25e70..2ad7854 100644
--- a/bin/varnishd/cache/cache_fetch.c
+++ b/bin/varnishd/cache/cache_fetch.c
@@ -764,6 +764,9 @@ vbf_stp_error(struct worker *wrk, struct busyobj *bo)
if (bo->fetch_objcore->stobj->stevedore != NULL)
ObjFreeObj(bo->wrk, bo->fetch_objcore);
+ if (bo->storage == NULL)
+ bo->storage = STV_next();
+
// XXX: reset all beresp flags ?
HTTP_Setup(bo->beresp, bo->ws, bo->vsl, SLT_BerespMethod);
diff --git a/bin/varnishtest/tests/r02494.vtc b/bin/varnishtest/tests/r02494.vtc
new file mode 100644
index 0000000..c7e90a3
--- /dev/null
+++ b/bin/varnishtest/tests/r02494.vtc
@@ -0,0 +1,28 @@
+varnishtest "vcl_back_backend_error default storage"
+
+server s1 {
+ rxreq
+ txresp -nolen -hdr "Content-Length: 10240" -body 1024
+} -start
+
+varnish v1 -vcl+backend {
+ sub vcl_backend_response {
+ set beresp.do_stream = false;
+ }
+ sub vcl_backend_error {
+ set beresp.status = 200;
+ set beresp.ttl = 1h;
+ return (deliver);
+ }
+} -start
+
+client c1 {
+ txreq -url "/"
+ rxresp
+ expect resp.status == 200
+} -run
+client c2 {
+ txreq -url "/"
+ rxresp
+ expect resp.status == 200
+} -run
More information about the varnish-commit
mailing list