Commit 9f95a309 authored by Anmol Sethi's avatar Anmol Sethi Committed by Brad Fitzpatrick

net/http: clean up checkIfModifiedSince and checkIfUnmodifiedSince

The comment in both functions referred to the wrong header and I made
the checks easier to read.

Change-Id: Ifb46729cee631a3305f557863818e3487b8eed71
Reviewed-on: https://go-review.googlesource.com/c/go/+/71753
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
parent 19532d04
...@@ -384,15 +384,18 @@ func checkIfUnmodifiedSince(r *Request, modtime time.Time) condResult { ...@@ -384,15 +384,18 @@ func checkIfUnmodifiedSince(r *Request, modtime time.Time) condResult {
if ius == "" || isZeroTime(modtime) { if ius == "" || isZeroTime(modtime) {
return condNone return condNone
} }
if t, err := ParseTime(ius); err == nil { t, err := ParseTime(ius)
// The Date-Modified header truncates sub-second precision, so if err != nil {
// use mtime < t+1s instead of mtime <= t to check for unmodified. return condNone
if modtime.Before(t.Add(1 * time.Second)) { }
// The Last-Modified header truncates sub-second precision so
// the modtime needs to be truncated too.
modtime = modtime.Truncate(time.Second)
if modtime.Before(t) || modtime.Equal(t) {
return condTrue return condTrue
} }
return condFalse return condFalse
}
return condNone
} }
func checkIfNoneMatch(w ResponseWriter, r *Request) condResult { func checkIfNoneMatch(w ResponseWriter, r *Request) condResult {
...@@ -436,9 +439,10 @@ func checkIfModifiedSince(r *Request, modtime time.Time) condResult { ...@@ -436,9 +439,10 @@ func checkIfModifiedSince(r *Request, modtime time.Time) condResult {
if err != nil { if err != nil {
return condNone return condNone
} }
// The Date-Modified header truncates sub-second precision, so // The Last-Modified header truncates sub-second precision so
// use mtime < t+1s instead of mtime <= t to check for unmodified. // the modtime needs to be truncated too.
if modtime.Before(t.Add(1 * time.Second)) { modtime = modtime.Truncate(time.Second)
if modtime.Before(t) || modtime.Equal(t) {
return condFalse return condFalse
} }
return condTrue return condTrue
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment