[master] 0b297f643 req: Add a Via header entry

Dridi Boukelmoune dridi.boukelmoune at gmail.com
Fri Aug 5 09:24:08 UTC 2022


commit 0b297f6431b324e77078d225eda24cfbf20e4ba9
Author: Dridi Boukelmoune <dridi.boukelmoune at gmail.com>
Date:   Tue Jul 26 13:07:51 2022 +0200

    req: Add a Via header entry
    
    > A proxy MUST send an appropriate Via header field, as described
    > below, in each message that it forwards.
    
    See rfc9110/7.6.3.

diff --git a/bin/varnishd/cache/cache_req_fsm.c b/bin/varnishd/cache/cache_req_fsm.c
index 9afba45b5..56668026d 100644
--- a/bin/varnishd/cache/cache_req_fsm.c
+++ b/bin/varnishd/cache/cache_req_fsm.c
@@ -873,6 +873,7 @@ cnt_recv_prep(struct req *req, const char *ci)
 		 * it in the VSL log.
 		 */
 		http_AppendHeader(req->http, H_X_Forwarded_For, ci);
+		http_AppendHeader(req->http, H_Via, http_ViaHeader());
 		http_CollectHdr(req->http, H_Cache_Control);
 
 		/* By default we use the first backend */
diff --git a/bin/varnishtest/tests/l00004.vtc b/bin/varnishtest/tests/l00004.vtc
index 95ad36111..5978af8b2 100644
--- a/bin/varnishtest/tests/l00004.vtc
+++ b/bin/varnishtest/tests/l00004.vtc
@@ -9,6 +9,8 @@ server s1 {
 
 varnish v1 -vcl+backend {
 	sub vcl_recv {
+		# make PipeAcct deterministic
+		unset req.http.via;
 		return (pipe);
 	}
 
diff --git a/bin/varnishtest/tests/l00005.vtc b/bin/varnishtest/tests/l00005.vtc
index 19459348a..51667672a 100644
--- a/bin/varnishtest/tests/l00005.vtc
+++ b/bin/varnishtest/tests/l00005.vtc
@@ -11,6 +11,10 @@ server s1 {
 } -start
 
 varnish v1 -vcl+backend {
+	sub vcl_recv {
+		# make BereqAcct deterministic
+		unset req.http.via;
+	}
 	sub vcl_backend_fetch {
 		unset bereq.http.x-forwarded-for;
 		unset bereq.http.x-varnish;
diff --git a/bin/varnishtest/tests/r03794.vtc b/bin/varnishtest/tests/r03794.vtc
index f9901a682..6597ebbd4 100644
--- a/bin/varnishtest/tests/r03794.vtc
+++ b/bin/varnishtest/tests/r03794.vtc
@@ -2,6 +2,8 @@ varnishtest "Append configurable Via header"
 
 server s1 {
 	rxreq
+	expect req.http.via == \
+		"1.1 v2 (Varnish/${pkg_branch}), 1.1 v1 (Varnish/${pkg_branch})"
 	txresp
 } -start
 
diff --git a/bin/varnishtest/tests/v00051.vtc b/bin/varnishtest/tests/v00051.vtc
index e13dae04b..db7d2e887 100644
--- a/bin/varnishtest/tests/v00051.vtc
+++ b/bin/varnishtest/tests/v00051.vtc
@@ -189,6 +189,7 @@ logexpect l1012 -v v1 -g vxid -q "vxid == 1012" {
 	expect 0 =	BereqHeader	{^foo: pipe}
 	expect 0 =	BereqHeader	{^Host: }
 	expect 0 =	BereqHeader	{^X-Forwarded-For: }
+	expect 0 =	BereqHeader	{^Via: }
 	expect 0 =	BereqHeader	{^X-Varnish: 1011}
 	expect 0 =	BereqHeader	{^Connection: close}
 	expect 0 =	BereqAcct	{^0 0 0 0 0 0}
@@ -207,6 +208,7 @@ logexpect l1011 -v v1 -g vxid -q "vxid == 1011" {
 	expect 0 =	ReqHeader       {^foo: pipe}
 	expect 0 =	ReqHeader       {^Host: }
 	expect 0 =	ReqHeader       {^X-Forwarded-For: }
+	expect 0 =	ReqHeader	{^Via: }
 	expect 0 =	VCL_call        {^RECV}
 	expect 0 =	VCL_return      {^pipe}
 	expect 0 =	VCL_call        {^HASH}


More information about the varnish-commit mailing list