diff --git a/s3api/controllers/base.go b/s3api/controllers/base.go index 15713d2..1ccf4e5 100644 --- a/s3api/controllers/base.go +++ b/s3api/controllers/base.go @@ -2004,16 +2004,16 @@ func ProcessHandlers(controller Controller, s3action string, svc *Services, hand func WrapMiddleware(handler fiber.Handler, logger s3log.AuditLogger, mm *metrics.Manager) fiber.Handler { return func(ctx *fiber.Ctx) error { err := handler(ctx) - if mm != nil { - mm.Send(ctx, err, metrics.ActionUndetected, 0, 0) - } - if logger != nil { - logger.Log(ctx, err, ctx.Body(), s3log.LogMeta{ - Action: metrics.ActionUndetected, - }) - } - if err != nil { + if mm != nil { + mm.Send(ctx, err, metrics.ActionUndetected, 0, 0) + } + if logger != nil { + logger.Log(ctx, err, ctx.Body(), s3log.LogMeta{ + Action: metrics.ActionUndetected, + }) + } + serr, ok := err.(s3err.APIError) if ok { ctx.Status(serr.HTTPStatusCode) @@ -2041,6 +2041,9 @@ func ProcessController(ctx *fiber.Ctx, controller Controller, s3action string, s SetResponseHeaders(ctx, response.Headers) opts := response.MetaOpts + if opts == nil { + opts = &MetaOptions{} + } // Send the metrics if svc.MetricsManager != nil { if opts.ObjectCount > 0 { diff --git a/s3api/server.go b/s3api/server.go index 26c2639..857bf81 100644 --- a/s3api/server.go +++ b/s3api/server.go @@ -78,6 +78,9 @@ func New( }) } + // initilaze the default value setter middleware + app.Use(middlewares.SetDefaultValues(root, region)) + // initialize the 'DecodeURL' middleware which // path unescapes the url app.Use(controllers.WrapMiddleware(middlewares.DecodeURL, l, mm)) @@ -87,9 +90,6 @@ func New( app.Use(middlewares.HostStyleParser(server.virtualDomain)) } - // initilaze the default value setter middleware - app.Use(middlewares.SetDefaultValues(root, region)) - // initialize the debug logger in debug mode if server.debug { app.Use(middlewares.DebugLogger())