[master] 81010e4 Cleare do_stream on all esi objects, including included objects.
Poul-Henning Kamp
phk at varnish-cache.org
Wed Aug 17 09:24:52 CEST 2011
commit 81010e415ca34634c01db5d6245c224e2e538f70
Author: Poul-Henning Kamp <phk at FreeBSD.org>
Date: Wed Aug 17 07:24:13 2011 +0000
Cleare do_stream on all esi objects, including included objects.
Found & Fixed by: Martin
Fixes #978
diff --git a/bin/varnishd/cache_center.c b/bin/varnishd/cache_center.c
index 47f3720..93bfc75 100644
--- a/bin/varnishd/cache_center.c
+++ b/bin/varnishd/cache_center.c
@@ -718,7 +718,7 @@ cnt_fetchbody(struct sess *sp)
else if (sp->wrk->is_gzip)
sp->wrk->vfp = &vfp_testgzip;
- if (sp->wrk->do_esi)
+ if (sp->wrk->do_esi || sp->esi_level > 0)
sp->wrk->do_stream = 0;
if (!sp->wantbody)
sp->wrk->do_stream = 0;
diff --git a/bin/varnishtest/tests/r00978.vtc b/bin/varnishtest/tests/r00978.vtc
new file mode 100644
index 0000000..39b89cb
--- /dev/null
+++ b/bin/varnishtest/tests/r00978.vtc
@@ -0,0 +1,40 @@
+varnishtest "r00978.vtc Test esi_level > 0 and do_stream"
+
+server s1 {
+ rxreq
+ expect req.url == "/"
+ txresp -body {
+ <html>
+ Before include
+ <esi:include src="/body" sr="foo"/>
+ After include
+ }
+ rxreq
+ expect req.url == "/body1"
+ txresp -body {
+ Included file
+ }
+} -start
+
+varnish v1 -vcl+backend {
+ sub vcl_recv {
+ if (req.esi_level > 0) {
+ set req.url = req.url + req.esi_level;
+ }
+ }
+ sub vcl_fetch {
+ if (req.url == "/") {
+ set beresp.do_esi = true;
+ }
+ set beresp.do_stream = true;
+ }
+} -start
+
+client c1 {
+ txreq
+ rxresp
+ expect resp.bodylen == 65
+ expect resp.status == 200
+} -run
+
+varnish v1 -expect esi_errors == 0
More information about the varnish-commit
mailing list