From b4d5a8a4ebb5f48771575865bc39dbac1c0ff420 Mon Sep 17 00:00:00 2001 From: guochao Date: Thu, 9 Jan 2025 21:33:43 +0800 Subject: [PATCH] ignore eof error when content length is 0 or response body is read to end --- cmd/proxy/main.go | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/cmd/proxy/main.go b/cmd/proxy/main.go index 5c207da..e21783d 100644 --- a/cmd/proxy/main.go +++ b/cmd/proxy/main.go @@ -398,6 +398,16 @@ func (server *Server) streamOnline(w http.ResponseWriter, r *http.Request, mtime memoryObject.wg.Wait() + if response.ContentLength > 0 { + if memoryObject.Offset == int(response.ContentLength) && err != nil { + slog.With("length", memoryObject.Offset, "error", err, "upstreamIdx", selectedIdx).Debug("something happened during download. but response body is read as whole. so error is reset to nil") + err = nil + } + } else if err == io.EOF { + slog.With("length", memoryObject.Offset, "error", err, "upstreamIdx", selectedIdx).Debug("something happened during download. content length is not specified and error is a eof. so error is reset to nil") + err = nil + } + if err != nil { slog.With("error", err, "upstreamIdx", selectedIdx).Error("something happened during download. will not cache this response") }