mirror of https://github.com/caddyserver/caddy.git
Fix Schrodinger's file existence check in file matcher
See: https://stackoverflow.com/a/12518877/1048862 For example, trying to check the existence of "/www/index.php/index.php" fails but not with an os.IsNotExist()-type error. So we have to assume that a file that cannot be successfully stat'ed at all does not exist.
This commit is contained in:
parent
14f9662f9c
commit
4bd9496525
|
@ -207,10 +207,22 @@ func (m MatchFile) selectFile(r *http.Request) (rel, abs string, matched bool) {
|
|||
return
|
||||
}
|
||||
|
||||
// fileExists returns true if file exists.
|
||||
// fileExists returns true if file exists,
|
||||
// false if it doesn't, or false if there
|
||||
// was any other error.
|
||||
func fileExists(file string) bool {
|
||||
_, err := os.Stat(file)
|
||||
return !os.IsNotExist(err)
|
||||
if err == nil {
|
||||
return true
|
||||
} else if os.IsNotExist(err) {
|
||||
return false
|
||||
} else {
|
||||
// we don't know if it exists,
|
||||
// so assume it doesn't, since
|
||||
// there must have been some
|
||||
// other error anyway
|
||||
return false
|
||||
}
|
||||
}
|
||||
|
||||
const (
|
||||
|
|
Loading…
Reference in New Issue