From 503df159b62f8d5fa92f10a500aa85a59568c62c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CNaeel=E2=80=9D?= Date: Sun, 9 Aug 2026 10:11:15 +0400 Subject: [PATCH] =?UTF-8?q?fix:=20proxyHandler=20=E2=80=94=20io.Copy=20?= =?UTF-8?q?=D0=B2=D0=BC=D0=B5=D1=81=D1=82=D0=BE=20=D1=80=D1=83=D1=87=D0=BD?= =?UTF-8?q?=D0=BE=D0=B3=D0=BE=20=D1=86=D0=B8=D0=BA=D0=BB=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/main.go | 28 +++++----------------------- 1 file changed, 5 insertions(+), 23 deletions(-) diff --git a/server/main.go b/server/main.go index 6cae426..265fe3e 100644 --- a/server/main.go +++ b/server/main.go @@ -327,30 +327,12 @@ func proxyHandler(w http.ResponseWriter, r *http.Request) { w.Header().Set("Content-Type", "application/octet-stream") w.Header().Set("Last-Modified", stat.LastModified.Format(http.TimeFormat)) - buf := make([]byte, 64*1024) // 64KB buffer - flusher, canFlush := w.(http.Flusher) - written := int64(0) - for { - n, readErr := obj.Read(buf) - if n > 0 { - nw, writeErr := w.Write(buf[:n]) - if writeErr != nil { - log.Printf("Error writing response: %v", writeErr) - return - } - written += int64(nw) - if canFlush { - flusher.Flush() - } - } - if readErr != nil { - if readErr != io.EOF { - log.Printf("Error reading object: %v", readErr) - } - break - } + written, err := io.Copy(w, obj) + if err != nil { + log.Printf("Error streaming object: %v (sent %d/%d bytes)", err, written, stat.Size) + } else { + log.Printf("Proxy: sent %d bytes for %s", written, key) } - log.Printf("Proxy: sent %d/%d bytes for %s", written, stat.Size, key) } func discoveryHandler(w http.ResponseWriter, r *http.Request) {