mirror of https://github.com/caddyserver/caddy.git
httpcaddyfile: Treat no matchers as 0-len path matchers (fix #3100)
+ a couple other minor changes from linter
This commit is contained in:
parent
c83d40ccd4
commit
00e99df209
|
@ -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)
|
||||
}
|
||||
|
|
|
@ -283,16 +283,15 @@ 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 {
|
||||
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 {
|
||||
if jPM == nil && len(jRoute.MatcherSetsRaw) == 1 {
|
||||
var pathMatcher caddyhttp.MatchPath
|
||||
_ = json.Unmarshal(jRoute.MatcherSetsRaw[0]["path"], &pathMatcher)
|
||||
decodedMatchers[j] = pathMatcher
|
||||
|
@ -300,12 +299,18 @@ func sortRoutes(routes []ConfigValue) {
|
|||
}
|
||||
|
||||
// if there is only one path in the matcher, sort by
|
||||
// longer path (more specific) first
|
||||
if len(iPM) == 1 && len(jPM) == 1 {
|
||||
// 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])
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return dirPositions[iDir] < dirPositions[jDir]
|
||||
})
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue