From 1e7b865f30be4f7032368709fed7e5c9c302945c Mon Sep 17 00:00:00 2001 From: chrislu Date: Fri, 5 Dec 2025 14:24:02 -0800 Subject: [PATCH] fix: Handle io.ReadAll errors when reading error response bodies In fetchFileContent and DownloadFile, the error from io.ReadAll was ignored when reading the filer's error response body. Now properly handles these errors to provide complete error messages. --- weed/admin/handlers/file_browser_handlers.go | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/weed/admin/handlers/file_browser_handlers.go b/weed/admin/handlers/file_browser_handlers.go index e964b05c4..6798a7dbf 100644 --- a/weed/admin/handlers/file_browser_handlers.go +++ b/weed/admin/handlers/file_browser_handlers.go @@ -510,7 +510,10 @@ func (h *FileBrowserHandlers) fetchFileContent(filePath string, timeout time.Dur defer resp.Body.Close() if resp.StatusCode != http.StatusOK { - body, _ := io.ReadAll(resp.Body) + body, err := io.ReadAll(resp.Body) + if err != nil { + return "", fmt.Errorf("filer returned status %d but failed to read response body: %w", resp.StatusCode, err) + } return "", fmt.Errorf("filer returned status %d: %s", resp.StatusCode, string(body)) } @@ -578,7 +581,11 @@ func (h *FileBrowserHandlers) DownloadFile(c *gin.Context) { defer resp.Body.Close() if resp.StatusCode != http.StatusOK { - body, _ := io.ReadAll(resp.Body) + body, err := io.ReadAll(resp.Body) + if err != nil { + c.JSON(resp.StatusCode, gin.H{"error": fmt.Sprintf("Filer returned status %d but failed to read response body: %v", resp.StatusCode, err)}) + return + } c.JSON(resp.StatusCode, gin.H{"error": fmt.Sprintf("Filer returned status %d: %s", resp.StatusCode, string(body))}) return }