diff --git a/server/gitea/cache.go b/server/gitea/cache.go index 0b7f702..ccc75b4 100644 --- a/server/gitea/cache.go +++ b/server/gitea/cache.go @@ -57,7 +57,7 @@ func (f FileResponse) createHttpResponse(cacheKey string) (http.Header, int) { } header.Set(ETagHeader, f.ETag) header.Set(ContentTypeHeader, f.MimeType) - header.Set(ContentLengthHeader, fmt.Sprint(len(f.Body))) + header.Set(ContentLengthHeader, fmt.Sprintf("%d", len(f.Body))) header.Set(PagesCacheIndicatorHeader, "true") log.Trace().Msgf("fileCache for '%s' used", cacheKey) diff --git a/server/upstream/upstream.go b/server/upstream/upstream.go index e8997c9..689c1db 100644 --- a/server/upstream/upstream.go +++ b/server/upstream/upstream.go @@ -157,13 +157,19 @@ func (o *Options) Upstream(ctx *context.Context, giteaClient *gitea.Client) (fin log.Debug().Msg("Handling error") // Set ETag & MIME - ctx.RespWriter.Header().Set(gitea.ETagHeader, header.Get(gitea.ETagHeader)) - ctx.RespWriter.Header().Set(gitea.PagesCacheIndicatorHeader, header.Get(gitea.PagesCacheIndicatorHeader)) - ctx.RespWriter.Header().Set(gitea.ContentLengthHeader, header.Get(gitea.ContentLengthHeader)) - if o.ServeRaw { + if eTag := header.Get(gitea.ETagHeader); eTag != "" { + ctx.RespWriter.Header().Set(gitea.ETagHeader, eTag) + } + if cacheIndicator := header.Get(gitea.PagesCacheIndicatorHeader); cacheIndicator != "" { + ctx.RespWriter.Header().Set(gitea.PagesCacheIndicatorHeader, cacheIndicator) + } + if length := header.Get(gitea.ContentLengthHeader); length != "" { + ctx.RespWriter.Header().Set(gitea.ContentLengthHeader, length) + } + if mime := header.Get(gitea.ContentTypeHeader); mime == "" || o.ServeRaw { ctx.RespWriter.Header().Set(gitea.ContentTypeHeader, rawMime) } else { - ctx.RespWriter.Header().Set(gitea.ContentTypeHeader, header.Get(gitea.ContentTypeHeader)) + ctx.RespWriter.Header().Set(gitea.ContentTypeHeader, mime) } if ctx.StatusCode != http.StatusNotFound {