diff options
author | Matthew Holt <mholt@users.noreply.github.com> | 2020-02-28 13:38:12 -0700 |
---|---|---|
committer | Matthew Holt <mholt@users.noreply.github.com> | 2020-02-28 13:38:12 -0700 |
commit | 00e99df20952ac3e10377277d7fe13c85de4cb81 (patch) | |
tree | 071139b06c5418eda1654b8462fc39034f0d89d7 /caddyconfig | |
parent | c83d40ccd43c8692061732974bd02fb388acd425 (diff) |
httpcaddyfile: Treat no matchers as 0-len path matchers (fix #3100)
+ a couple other minor changes from linter
Diffstat (limited to 'caddyconfig')
-rw-r--r-- | caddyconfig/httpcaddyfile/builtins.go | 2 | ||||
-rw-r--r-- | caddyconfig/httpcaddyfile/directives.go | 45 | ||||
-rw-r--r-- | caddyconfig/httpcaddyfile/httptype.go | 5 |
3 files changed, 26 insertions, 26 deletions
diff --git a/caddyconfig/httpcaddyfile/builtins.go b/caddyconfig/httpcaddyfile/builtins.go index 43e184e..ef15ad9 100644 --- a/caddyconfig/httpcaddyfile/builtins.go +++ b/caddyconfig/httpcaddyfile/builtins.go @@ -37,7 +37,7 @@ func init() { RegisterHandlerDirective("redir", parseRedir) RegisterHandlerDirective("respond", parseRespond) RegisterHandlerDirective("route", parseRoute) - RegisterHandlerDirective("handle", parseSegmentAsSubroute) + RegisterHandlerDirective("handle", parseHandle) RegisterDirective("handle_errors", parseHandleErrors) RegisterDirective("log", parseLog) } diff --git a/caddyconfig/httpcaddyfile/directives.go b/caddyconfig/httpcaddyfile/directives.go index 03cc8a1..c6bd24b 100644 --- a/caddyconfig/httpcaddyfile/directives.go +++ b/caddyconfig/httpcaddyfile/directives.go @@ -283,27 +283,32 @@ func sortRoutes(routes []ConfigValue) { return false } - if len(iRoute.MatcherSetsRaw) == 1 && len(jRoute.MatcherSetsRaw) == 1 { - // use already-decoded matcher, or decode if it's the first time seeing it - iPM, jPM := decodedMatchers[i], decodedMatchers[j] - if iPM == nil { - var pathMatcher caddyhttp.MatchPath - _ = json.Unmarshal(iRoute.MatcherSetsRaw[0]["path"], &pathMatcher) - decodedMatchers[i] = pathMatcher - iPM = pathMatcher - } - if jPM == nil { - var pathMatcher caddyhttp.MatchPath - _ = json.Unmarshal(jRoute.MatcherSetsRaw[0]["path"], &pathMatcher) - decodedMatchers[j] = pathMatcher - jPM = pathMatcher - } + // use already-decoded matcher, or decode if it's the first time seeing it + iPM, jPM := decodedMatchers[i], decodedMatchers[j] + if iPM == nil && len(iRoute.MatcherSetsRaw) == 1 { + var pathMatcher caddyhttp.MatchPath + _ = json.Unmarshal(iRoute.MatcherSetsRaw[0]["path"], &pathMatcher) + decodedMatchers[i] = pathMatcher + iPM = pathMatcher + } + if jPM == nil && len(jRoute.MatcherSetsRaw) == 1 { + var pathMatcher caddyhttp.MatchPath + _ = json.Unmarshal(jRoute.MatcherSetsRaw[0]["path"], &pathMatcher) + decodedMatchers[j] = pathMatcher + jPM = pathMatcher + } - // if there is only one path in the matcher, sort by - // longer path (more specific) first - if len(iPM) == 1 && len(jPM) == 1 { - return len(iPM[0]) > len(jPM[0]) - } + // if there is only one path in the matcher, sort by + // longer path (more specific) first; if one of the + // routes doesn't have a matcher, then it's treated + // like a zero-length path matcher + switch { + case iPM == nil && jPM != nil: + return false + case iPM != nil && jPM == nil: + return true + case iPM != nil && jPM != nil: + return len(iPM[0]) > len(jPM[0]) } } diff --git a/caddyconfig/httpcaddyfile/httptype.go b/caddyconfig/httpcaddyfile/httptype.go index 8c10a53..89375db 100644 --- a/caddyconfig/httpcaddyfile/httptype.go +++ b/caddyconfig/httpcaddyfile/httptype.go @@ -1012,11 +1012,6 @@ func (c counter) nextGroup() string { return name } -type matcherSetAndTokens struct { - matcherSet caddy.ModuleMap - tokens []caddyfile.Token -} - type namedCustomLog struct { name string log *caddy.CustomLog |