From: Hong Ruiqi Date: Mon, 13 Feb 2012 04:45:19 +0000 (-0500) Subject: net/http: use mtime < t+1s to check for unmodified X-Git-Tag: weekly.2012-02-14~89 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=c58b6ad02203cc0f4ba3cd0a38ce222d177cc75e;p=gostls13.git net/http: use mtime < t+1s to check for unmodified The Date-Modified header truncates sub-second precision, so use mtime < t+1s instead of mtime <= t to check for unmodified. R=golang-dev, bradfitz CC=golang-dev https://golang.org/cl/5655052 --- diff --git a/src/pkg/net/http/fs.go b/src/pkg/net/http/fs.go index 0e192eb99c..f35dd32c30 100644 --- a/src/pkg/net/http/fs.go +++ b/src/pkg/net/http/fs.go @@ -186,7 +186,10 @@ func checkLastModified(w ResponseWriter, r *Request, modtime time.Time) bool { if modtime.IsZero() { return false } - if t, err := time.Parse(TimeFormat, r.Header.Get("If-Modified-Since")); err == nil && modtime.After(t) { + + // The Date-Modified header truncates sub-second precision, so + // use mtime < t+1s instead of mtime <= t to check for unmodified. + if t, err := time.Parse(TimeFormat, r.Header.Get("If-Modified-Since")); err == nil && modtime.Before(t.Add(1*time.Second)) { w.WriteHeader(StatusNotModified) return true }