staticfiles: remove mapFSRootOpenErr because Go stdlib has fixed the relevant issue (#1919)

This commit is contained in:
Wèi Cōngruì 2017-10-13 22:01:30 +08:00 committed by Matt Holt
parent 0548b97701
commit 79072828a5

View file

@ -66,9 +66,6 @@ func (fs FileServer) serveFile(w http.ResponseWriter, r *http.Request) (int, err
// open the requested file
f, err := fs.Root.Open(reqPath)
if err != nil {
// TODO: remove when http.Dir handles this (Go 1.9?)
// Go issue #18984
err = mapFSRootOpenErr(err)
if os.IsNotExist(err) {
return http.StatusNotFound, nil
} else if os.IsPermission(err) {
@ -280,35 +277,3 @@ var staticEncodingPriority = []string{
"br",
"gzip",
}
// mapFSRootOpenErr maps the provided non-nil error
// to a possibly better non-nil error. In particular, it turns OS-specific errors
// about opening files in non-directories into os.ErrNotExist.
//
// TODO: remove when http.Dir handles this (slated for Go 1.9)
// Go issue #18984
func mapFSRootOpenErr(originalErr error) error {
if os.IsNotExist(originalErr) || os.IsPermission(originalErr) {
return originalErr
}
perr, ok := originalErr.(*os.PathError)
if !ok {
return originalErr
}
name := perr.Path
parts := strings.Split(name, string(filepath.Separator))
for i := range parts {
if parts[i] == "" {
continue
}
fi, err := os.Stat(strings.Join(parts[:i+1], string(filepath.Separator)))
if err != nil {
return originalErr
}
if !fi.IsDir() {
return os.ErrNotExist
}
}
return originalErr
}