Blob Blame History Raw
diff -Nur ../varnish-6.6.2.prep/bin/varnishd/cache/cache_http.c ./bin/varnishd/cache/cache_http.c
--- ../varnish-6.6.2.prep/bin/varnishd/cache/cache_http.c	2022-01-12 12:30:00.000000000 +0100
+++ ./bin/varnishd/cache/cache_http.c	2022-11-14 21:07:24.093085010 +0100
@@ -900,6 +900,8 @@
 {
 	if (fm->hdf[u] & HDF_FILTER)
 		return (1);
+	if (u < HTTP_HDR_FIRST)
+		return (0);
 #define HTTPH(a, b, c) \
 	if (((c) & how) && http_IsHdr(&fm->hd[u], (b))) \
 		return (1);
diff -Nur ../varnish-6.6.2.prep/bin/varnishtest/tests/r03830.vtc ./bin/varnishtest/tests/r03830.vtc
--- ../varnish-6.6.2.prep/bin/varnishtest/tests/r03830.vtc	1970-01-01 01:00:00.000000000 +0100
+++ ./bin/varnishtest/tests/r03830.vtc	2022-11-14 21:08:47.324725940 +0100
@@ -0,0 +1,29 @@
+varnishtest "3830: Do not call http_hdr_flags() on pseudo-headers"
+
+server s1 {
+	rxreq
+	txresp -reason ":x"
+
+	rxreq
+	txresp
+} -start
+
+varnish v1 -vcl+backend {
+	sub vcl_recv {
+		return (hash);
+	}
+} -start
+
+client c1 {
+	txreq
+	rxresp
+	expect resp.status == 200
+} -run
+
+client c2 {
+	txreq -url :x -method :x
+	rxresp
+	expect resp.status == 200
+} -run
+
+varnish v1 -vsl_catchup