MCPcopy
hub / github.com/gofiber/fiber / serverErrorHandler

Method serverErrorHandler

app.go:1590–1651  ·  app.go::App.serverErrorHandler

serverErrorHandler is a wrapper around the application's error handler method user for the fasthttp server configuration. It maps a set of fasthttp errors to fiber errors before calling the application's error handler method.

(fctx *fasthttp.RequestCtx, err error)

Source from the content-addressed store, hash-verified

1588// user for the fasthttp server configuration. It maps a set of fasthttp errors to fiber
1589// errors before calling the application's error handler method.
1590func (app *App) serverErrorHandler(fctx *fasthttp.RequestCtx, err error) {
1591 // Acquire Ctx with fasthttp request from pool
1592 c := app.AcquireCtx(fctx)
1593 defer app.ReleaseCtx(c)
1594
1595 var (
1596 errNetOP *net.OpError
1597 netErr net.Error
1598 )
1599
1600 errMessage := utils.StatusMessage(StatusBadRequest)
1601 matchedNetOP := errors.As(err, &errNetOP)
1602 if err != nil && (!matchedNetOP || errNetOP != nil) {
1603 errMessage = err.Error()
1604 }
1605 matchedNetErr := errors.As(err, &netErr)
1606
1607 switch {
1608 case err == nil:
1609 err = NewError(StatusBadRequest, errMessage)
1610 case matchedNetOP && errNetOP == nil:
1611 err = ErrBadGateway
1612 case errors.As(err, new(*fasthttp.ErrSmallBuffer)):
1613 err = ErrRequestHeaderFieldsTooLarge
1614 case matchedNetOP && errNetOP.Timeout():
1615 err = ErrRequestTimeout
1616 case matchedNetErr:
1617 err = ErrBadGateway
1618 case errors.Is(err, fasthttp.ErrBodyTooLarge):
1619 err = ErrRequestEntityTooLarge
1620 case errors.Is(err, fasthttp.ErrGetOnly):
1621 err = ErrMethodNotAllowed
1622 case strings.Contains(errMessage, "unsupported http request method"):
1623 err = ErrNotImplemented
1624 case strings.Contains(errMessage, "timeout"):
1625 err = ErrRequestTimeout
1626 default:
1627 err = NewError(StatusBadRequest, errMessage)
1628 }
1629
1630 if c.getMethodInt() != -1 {
1631 c.setSkipNonUseRoutes(true)
1632 defer c.setSkipNonUseRoutes(false)
1633
1634 var nextErr error
1635 if d, isDefault := c.(*DefaultCtx); isDefault {
1636 _, nextErr = app.next(d)
1637 } else {
1638 _, nextErr = app.nextCustom(c)
1639 }
1640
1641 if nextErr != nil && !errors.Is(nextErr, ErrNotFound) && !errors.Is(nextErr, ErrMethodNotAllowed) {
1642 log.Errorf("serverErrorHandler: middleware traversal failed: %v", nextErr)
1643 }
1644 }
1645
1646 if catch := app.ErrorHandler(c, err); catch != nil {
1647 log.Errorf("serverErrorHandler: failed to call ErrorHandler: %v", catch)

Calls 14

AcquireCtxMethod · 0.95
ReleaseCtxMethod · 0.95
nextMethod · 0.95
nextCustomMethod · 0.95
ErrorHandlerMethod · 0.95
ErrorfFunction · 0.92
NewErrorFunction · 0.85
TimeoutMethod · 0.80
ContainsMethod · 0.80
ErrorMethod · 0.65
IsMethod · 0.65
getMethodIntMethod · 0.65