[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