webdav: convert to UTC before using http.TimeFormat
http.TimeFormat hard-codes GMT and is documented that:
> TimeFormat is the time format to use when generating times in HTTP
> headers. It is like time.RFC1123 but hard-codes GMT as the time
> zone. The time being formatted must be in UTC for Format to generate
> the correct format.
These two users weren't UTC-ifying the time.Time first.
Fixes golang/go#25015
Change-Id: I82be01856260e363361137fd9651b1940f439f21
Reviewed-on: https://go-review.googlesource.com/113795
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Filippo Valsorda <filippo@golang.org>
diff --git a/webdav/prop.go b/webdav/prop.go
index e36a3b3..ba595d7 100644
--- a/webdav/prop.go
+++ b/webdav/prop.go
@@ -376,7 +376,7 @@
}
func findLastModified(ctx context.Context, fs FileSystem, ls LockSystem, name string, fi os.FileInfo) (string, error) {
- return fi.ModTime().Format(http.TimeFormat), nil
+ return fi.ModTime().UTC().Format(http.TimeFormat), nil
}
func findContentType(ctx context.Context, fs FileSystem, ls LockSystem, name string, fi os.FileInfo) (string, error) {
diff --git a/webdav/prop_test.go b/webdav/prop_test.go
index 57d0e82..914f950 100644
--- a/webdav/prop_test.go
+++ b/webdav/prop_test.go
@@ -29,7 +29,7 @@
for i, p := range pst.Props {
switch p.XMLName {
case xml.Name{Space: "DAV:", Local: "getlastmodified"}:
- p.InnerXML = []byte(fi.ModTime().Format(http.TimeFormat))
+ p.InnerXML = []byte(fi.ModTime().UTC().Format(http.TimeFormat))
pst.Props[i] = p
case xml.Name{Space: "DAV:", Local: "getetag"}:
if fi.IsDir() {