From 54e2c39df158eaef56758194bb9bb5f1b1634c9b Mon Sep 17 00:00:00 2001 From: niksis02 Date: Tue, 23 Sep 2025 22:58:45 +0400 Subject: [PATCH] fix: fixes the invalid Content-Length error Fixes #1426 Fiber returns a custom error, if it fails to parse the `Content-Length` header. This implementation adds a check in the fiber global error handler to return an empty `400` Bad Request error, if fiber fails to parse the `Content-Length` header. --- s3api/server.go | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/s3api/server.go b/s3api/server.go index 01dd657..99ab140 100644 --- a/s3api/server.go +++ b/s3api/server.go @@ -16,7 +16,9 @@ package s3api import ( "crypto/tls" + "errors" "net/http" + "strings" "github.com/gofiber/fiber/v2" "github.com/gofiber/fiber/v2/middleware/logger" @@ -180,7 +182,16 @@ func globalErrorHandler(ctx *fiber.Ctx, er error) error { // log it as a panic log debuglogger.Panic(er) } else { - // otherwise log it as an internal error + // handle the fiber specific errors + var fiberErr *fiber.Error + if errors.As(er, &fiberErr) { + if strings.Contains(fiberErr.Message, "cannot parse Content-Length") { + ctx.Status(http.StatusBadRequest) + return nil + } + } + + // additionally log the internal error debuglogger.InernalError(er) }