summaryrefslogtreecommitdiff
path: root/caddyconfig
diff options
context:
space:
mode:
authorMatthew Holt <mholt@users.noreply.github.com>2020-11-24 16:36:58 -0700
committerMatthew Holt <mholt@users.noreply.github.com>2020-11-24 16:36:58 -0700
commit63afffc2e317579a5bc618d5441ac238127114a0 (patch)
tree984ba3d0a53be656913dfb7fe599aba8e1adf694 /caddyconfig
parent2d5498ee6f298703b5934a8f8889fa02778d08aa (diff)
httpcaddyfile: Proper log config with catch-all blocks (fix #3878)
Diffstat (limited to 'caddyconfig')
-rw-r--r--caddyconfig/httpcaddyfile/httptype.go23
1 files changed, 16 insertions, 7 deletions
diff --git a/caddyconfig/httpcaddyfile/httptype.go b/caddyconfig/httpcaddyfile/httptype.go
index e4e40b2..406d8b9 100644
--- a/caddyconfig/httpcaddyfile/httptype.go
+++ b/caddyconfig/httpcaddyfile/httptype.go
@@ -450,6 +450,15 @@ func (st *ServerType) serversFromPairings(
var hasCatchAllTLSConnPolicy, addressQualifiesForTLS bool
autoHTTPSWillAddConnPolicy := autoHTTPS != "off"
+ // if a catch-all server block (one which accepts all hostnames) exists in this pairing,
+ // we need to know that so that we can configure logs properly (see #3878)
+ var catchAllSblockExists bool
+ for _, sblock := range p.serverBlocks {
+ if len(sblock.hostsFromKeys(false)) == 0 {
+ catchAllSblockExists = true
+ }
+ }
+
// create a subroute for each site in the server block
for _, sblock := range p.serverBlocks {
matcherSetsEnc, err := st.compileEncodedMatcherSets(sblock)
@@ -563,13 +572,13 @@ func (st *ServerType) serversFromPairings(
} else {
// map each host to the user's desired logger name
for _, h := range sblockLogHosts {
- // if the custom logger name is non-empty, add it to
- // the map; otherwise, only map to an empty logger
- // name if the server block has a catch-all host (in
- // which case only requests with mapped hostnames will
- // be access-logged, so it'll be necessary to add them
- // to the map even if they use default logger)
- if ncl.name != "" || len(hosts) == 0 {
+ // if the custom logger name is non-empty, add it to the map;
+ // otherwise, only map to an empty logger name if this or
+ // another site block on this server has a catch-all host (in
+ // which case only requests with mapped hostnames will be
+ // access-logged, so it'll be necessary to add them to the
+ // map even if they use default logger)
+ if ncl.name != "" || catchAllSblockExists {
if srv.Logs.LoggerNames == nil {
srv.Logs.LoggerNames = make(map[string]string)
}