diff options
author | Francis Lavoie <lavofr@gmail.com> | 2020-10-31 12:27:01 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-10-31 10:27:01 -0600 |
commit | 966d5e6b42fc6da3da8bd39dd6ceceb8f1da3999 (patch) | |
tree | 2b763f98d8673c3d5c8795fbafb1313d091a06d8 /modules/caddyhttp | |
parent | b66099379d065ec3340cbe147f65dcf0a39e8e52 (diff) |
caddyhttp: Merge header matchers in Caddyfile (#3832)
Diffstat (limited to 'modules/caddyhttp')
-rw-r--r-- | modules/caddyhttp/matchers.go | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/modules/caddyhttp/matchers.go b/modules/caddyhttp/matchers.go index a832024..cbb6253 100644 --- a/modules/caddyhttp/matchers.go +++ b/modules/caddyhttp/matchers.go @@ -408,7 +408,16 @@ func (m *MatchHeader) UnmarshalCaddyfile(d *caddyfile.Dispenser) error { if !d.Args(&field, &val) { return d.Errf("malformed header matcher: expected both field and value") } - http.Header(*m).Set(field, val) + + // If multiple header matchers with the same header field are defined, + // we want to add the existing to the list of headers (will be OR'ed) + existing := http.Header(*m).Values(field) + if len(existing) > 0 { + http.Header(*m).Add(field, val) + } else { + http.Header(*m).Set(field, val) + } + if d.NextBlock(0) { return d.Err("malformed header matcher: blocks are not supported") } |