diff --git a/server/gitea/client.go b/server/gitea/client.go index d6f8d40..3b9ad6f 100644 --- a/server/gitea/client.go +++ b/server/gitea/client.go @@ -83,9 +83,6 @@ func (client *Client) ServeRawContent(uri string) (*fasthttp.Response, error) { return nil, err } - // fasthttp else will set "Content-Length: 0" - res.SetBodyStream(&strings.Reader{}, -1) - if err != nil { return nil, err } diff --git a/server/upstream/upstream.go b/server/upstream/upstream.go index 7c9a035..b9fc2bc 100644 --- a/server/upstream/upstream.go +++ b/server/upstream/upstream.go @@ -181,6 +181,9 @@ func (o *Options) Upstream(ctx *fasthttp.RequestCtx, giteaClient *gitea.Client, var cacheBodyWriter bytes.Buffer if res != nil { if res.Header.ContentLength() > fileCacheSizeLimit { + // fasthttp else will set "Content-Length: 0" + ctx.Response.SetBodyStream(&strings.Reader{}, -1) + err = res.BodyWriteTo(ctx.Response.BodyWriter()) } else { // TODO: cache is half-empty if request is cancelled - does the ctx.Err() below do the trick?