]> source.dussan.org Git - gitea.git/commitdiff
Fix wrong last modify time (#32102) (#32104)
authorGiteabot <teabot@gitea.io>
Sun, 22 Sep 2024 19:12:57 +0000 (03:12 +0800)
committerGitHub <noreply@github.com>
Sun, 22 Sep 2024 19:12:57 +0000 (19:12 +0000)
Backport #32102 by @lunny

Fix #31930 and more places which use `http.TimeFormat` wrongly.
`http.TimeFormat` requires a UTC time. refer to
https://pkg.go.dev/net/http#TimeFormat

Co-authored-by: Lunny Xiao <xiaolunwen@gmail.com>
modules/httpcache/httpcache.go
modules/httplib/serve.go
routers/api/packages/maven/maven.go
routers/web/repo/githttp.go

index 40458dfc336e0a6abe1ebab53a2abee8b77882af..2c9af9440552b4c4ea7e5097e69537c802fb896e 100644 (file)
@@ -75,7 +75,8 @@ func HandleGenericETagTimeCache(req *http.Request, w http.ResponseWriter, etag s
                w.Header().Set("Etag", etag)
        }
        if lastModified != nil && !lastModified.IsZero() {
-               w.Header().Set("Last-Modified", lastModified.Format(http.TimeFormat))
+               // http.TimeFormat required a UTC time, refer to https://pkg.go.dev/net/http#TimeFormat
+               w.Header().Set("Last-Modified", lastModified.UTC().Format(http.TimeFormat))
        }
 
        if len(etag) > 0 {
index 6e147d76f5142323b2d9be3f9f1db4156a0e6ae6..2e3e6a7c4238a68dec1b0e20111c8e60cbdbce6d 100644 (file)
@@ -79,6 +79,7 @@ func ServeSetHeaders(w http.ResponseWriter, opts *ServeHeaderOptions) {
        httpcache.SetCacheControlInHeader(header, duration)
 
        if !opts.LastModified.IsZero() {
+               // http.TimeFormat required a UTC time, refer to https://pkg.go.dev/net/http#TimeFormat
                header.Set("Last-Modified", opts.LastModified.UTC().Format(http.TimeFormat))
        }
 }
index faed8cbd619bc7bff307641a6eda9c59f2a36994..c3f1c4a87ee4b2fd8071374cec374a33729fb1f9 100644 (file)
@@ -115,7 +115,9 @@ func serveMavenMetadata(ctx *context.Context, params parameters) {
        xmlMetadataWithHeader := append([]byte(xml.Header), xmlMetadata...)
 
        latest := pds[len(pds)-1]
-       ctx.Resp.Header().Set("Last-Modified", latest.Version.CreatedUnix.Format(http.TimeFormat))
+       // http.TimeFormat required a UTC time, refer to https://pkg.go.dev/net/http#TimeFormat
+       lastModifed := latest.Version.CreatedUnix.AsTime().UTC().Format(http.TimeFormat)
+       ctx.Resp.Header().Set("Last-Modified", lastModifed)
 
        ext := strings.ToLower(filepath.Ext(params.Filename))
        if isChecksumExtension(ext) {
index f0579b56ea1377dbf4667fd37fefaa01c6a3ebd7..f85dabc2247823dc31643444038e77345be31df2 100644 (file)
@@ -395,7 +395,8 @@ func (h *serviceHandler) sendFile(ctx *context.Context, contentType, file string
 
        ctx.Resp.Header().Set("Content-Type", contentType)
        ctx.Resp.Header().Set("Content-Length", fmt.Sprintf("%d", fi.Size()))
-       ctx.Resp.Header().Set("Last-Modified", fi.ModTime().Format(http.TimeFormat))
+       // http.TimeFormat required a UTC time, refer to https://pkg.go.dev/net/http#TimeFormat
+       ctx.Resp.Header().Set("Last-Modified", fi.ModTime().UTC().Format(http.TimeFormat))
        http.ServeFile(ctx.Resp, ctx.Req, reqFile)
 }