From a26f70a12b1289231d705bc002fe1df3180cb6c5 Mon Sep 17 00:00:00 2001 From: Francis Lavoie Date: Mon, 30 Nov 2020 12:20:30 -0500 Subject: [PATCH] headers: Fix Caddyfile parsing with request matcher (#3892) --- .../integration/caddyfile_adapt/header.txt | 25 +++++++++++++++++++ modules/caddyhttp/headers/caddyfile.go | 4 +++ 2 files changed, 29 insertions(+) diff --git a/caddytest/integration/caddyfile_adapt/header.txt b/caddytest/integration/caddyfile_adapt/header.txt index b8e102fa..19a5b41a 100644 --- a/caddytest/integration/caddyfile_adapt/header.txt +++ b/caddytest/integration/caddyfile_adapt/header.txt @@ -9,6 +9,10 @@ ?Tim "Berners-Lee" defer } + @images path /images/* + header @images { + Cache-Control "public, max-age=3600, stale-while-revalidate=86400" + } } ---------- { @@ -20,6 +24,27 @@ ":80" ], "routes": [ + { + "match": [ + { + "path": [ + "/images/*" + ] + } + ], + "handle": [ + { + "handler": "headers", + "response": { + "set": { + "Cache-Control": [ + "public, max-age=3600, stale-while-revalidate=86400" + ] + } + } + } + ] + }, { "handle": [ { diff --git a/modules/caddyhttp/headers/caddyfile.go b/modules/caddyhttp/headers/caddyfile.go index 75498b24..574e54bb 100644 --- a/modules/caddyhttp/headers/caddyfile.go +++ b/modules/caddyhttp/headers/caddyfile.go @@ -46,6 +46,10 @@ func init() { // and ? conditionally sets a value only if the header field is not already // set. func parseCaddyfile(h httpcaddyfile.Helper) ([]httpcaddyfile.ConfigValue, error) { + if !h.Next() { + return nil, h.ArgErr() + } + matcherSet, err := h.ExtractMatcherSet() if err != nil { return nil, err