[master] e0c8a524b Coverage for ESI subrequests vs. Request body
Nils Goroll
nils.goroll at uplex.de
Mon Jun 20 15:44:06 UTC 2022
commit e0c8a524b58ea7a1d253550ef87dd942da577418
Author: Nils Goroll <nils.goroll at uplex.de>
Date: Mon Jun 20 17:30:34 2022 +0200
Coverage for ESI subrequests vs. Request body
Make sure subrequests to not see Content-Length / Transfer-Encoding
diff --git a/bin/varnishtest/tests/e00036.vtc b/bin/varnishtest/tests/e00036.vtc
new file mode 100644
index 000000000..9e6e7d86f
--- /dev/null
+++ b/bin/varnishtest/tests/e00036.vtc
@@ -0,0 +1,83 @@
+varnishtest "ESI vs. request body"
+
+server s1 {
+ rxreq
+ expect req.method == POST
+ expect req.url == "/foo/bar"
+ expect req.bodylen == 6
+ expect req.http.Content-Length == "6"
+ expect req.http.Transfer-Encoding == "<undef>"
+ txresp -body {
+ <html>
+ Before include
+ <!--esi <esi:include src="body1"/> -->
+ After include
+ }
+ rxreq
+ expect req.method == XGET
+ expect req.url == "/foo/body1"
+ expect req.bodylen == 0
+ expect req.http.Content-Length == "<undef>"
+ expect req.http.Transfer-Encoding == "<undef>"
+ txresp -body {
+ Included file
+ }
+
+ rxreq
+ expect req.method == POST
+ expect req.url == "/foo/bar"
+ expect req.bodylen == 66
+ # std.cache_req_body() turns chunked into C-L
+ expect req.http.Content-Length == "66"
+ expect req.http.Transfer-Encoding == "<undef>"
+ txresp -body {
+ <html>
+ Before include
+ <!--esi <esi:include src="body2"/> -->
+ After include
+ }
+ rxreq
+ expect req.method == XGET
+ expect req.url == "/foo/body2"
+ expect req.bodylen == 0
+ expect req.http.Content-Length == "<undef>"
+ expect req.http.Transfer-Encoding == "<undef>"
+ txresp -body {
+ Included file
+ }
+} -start
+
+varnish v1 -vcl+backend {
+ import std;
+
+ sub vcl_recv {
+ std.cache_req_body(1KB);
+ if (req.url ~ "^/foo/body") {
+ set req.method = "XGET";
+ }
+ return (pass);
+ }
+
+ sub vcl_backend_response {
+ if (bereq.url !~ "^/foo/body") {
+ set beresp.do_esi = true;
+ }
+ }
+} -start
+
+client c1 {
+ txreq -url /foo/bar -method POST -body {foobar}
+ rxresp
+ expect resp.status == 200
+ expect resp.bodylen == 67
+
+ txreq -url /foo/bar -method POST -nolen \
+ -hdr "Transfer-encoding: chunked"
+ chunkedlen 66
+ chunkedlen 0
+ rxresp
+ expect resp.status == 200
+ expect resp.bodylen == 67
+} -run
+
+varnish v1 -expect esi_errors == 0
More information about the varnish-commit
mailing list