summaryrefslogtreecommitdiff
path: root/libgo/go/net/http/fs.go
diff options
context:
space:
mode:
Diffstat (limited to 'libgo/go/net/http/fs.go')
-rw-r--r--libgo/go/net/http/fs.go18
1 files changed, 7 insertions, 11 deletions
diff --git a/libgo/go/net/http/fs.go b/libgo/go/net/http/fs.go
index 5819334b5f4..ecad14ac1e4 100644
--- a/libgo/go/net/http/fs.go
+++ b/libgo/go/net/http/fs.go
@@ -98,12 +98,10 @@ type File interface {
Stat() (os.FileInfo, error)
}
-func dirList(w ResponseWriter, f File) {
+func dirList(w ResponseWriter, r *Request, f File) {
dirs, err := f.Readdir(-1)
if err != nil {
- // TODO: log err.Error() to the Server.ErrorLog, once it's possible
- // for a handler to get at its Server via the ResponseWriter. See
- // Issue 12438.
+ logf(r, "http: error reading directory: %v", err)
Error(w, "Error reading directory", StatusInternalServerError)
return
}
@@ -319,7 +317,7 @@ func scanETag(s string) (etag string, remain string) {
// Character values allowed in ETags.
case c == 0x21 || c >= 0x23 && c <= 0x7E || c >= 0x80:
case c == '"':
- return string(s[:i+1]), s[i+1:]
+ return s[:i+1], s[i+1:]
default:
return "", ""
}
@@ -445,7 +443,7 @@ func checkIfModifiedSince(r *Request, modtime time.Time) condResult {
}
func checkIfRange(w ResponseWriter, r *Request, modtime time.Time) condResult {
- if r.Method != "GET" {
+ if r.Method != "GET" && r.Method != "HEAD" {
return condNone
}
ir := r.Header.get("If-Range")
@@ -532,10 +530,8 @@ func checkPreconditions(w ResponseWriter, r *Request, modtime time.Time) (done b
}
rangeHeader = r.Header.get("Range")
- if rangeHeader != "" {
- if checkIfRange(w, r, modtime) == condFalse {
- rangeHeader = ""
- }
+ if rangeHeader != "" && checkIfRange(w, r, modtime) == condFalse {
+ rangeHeader = ""
}
return false, rangeHeader
}
@@ -615,7 +611,7 @@ func serveFile(w ResponseWriter, r *Request, fs FileSystem, name string, redirec
return
}
w.Header().Set("Last-Modified", d.ModTime().UTC().Format(TimeFormat))
- dirList(w, f)
+ dirList(w, r, f)
return
}