[3.0] 0f8805f Cleare do_stream on all esi objects, including included objects.

Tollef Fog Heen tfheen at varnish-cache.org
Wed Aug 17 11:29:01 CEST 2011


commit 0f8805f5e56f4d3312721c0cec7a3b1fa371be5f
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