fix: proxyHandler — io.Copy вместо ручного цикла

This commit is contained in:
“Naeel”
2026-08-09 10:11:15 +04:00
parent 1e50cc1a83
commit 503df159b6
+5 -23
View File
@@ -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) {