mirror of https://github.com/gofiber/fiber.git
🚀 Improve error handling for net error(s) (#2421)
* improve error handling for net error(s) fixes: reverse proxy support #2419 * Update app.go Co-authored-by: leonklingele <git@leonklingele.de> * improve error handling for net error(s) fixes: reverse proxy support #2419 * improve error handling for net error(s) fixes: reverse proxy support #2419 * improve error handling for net error(s) fixes: reverse proxy support #2419 --------- Co-authored-by: leonklingele <git@leonklingele.de>pull/2426/head
parent
c4d2876d64
commit
9feaf2296e
7
app.go
7
app.go
|
@ -1052,13 +1052,18 @@ func (app *App) serverErrorHandler(fctx *fasthttp.RequestCtx, err error) {
|
|||
c := app.AcquireCtx(fctx)
|
||||
defer app.ReleaseCtx(c)
|
||||
|
||||
var errNetOP *net.OpError
|
||||
var (
|
||||
errNetOP *net.OpError
|
||||
netErr net.Error
|
||||
)
|
||||
|
||||
switch {
|
||||
case errors.As(err, new(*fasthttp.ErrSmallBuffer)):
|
||||
err = ErrRequestHeaderFieldsTooLarge
|
||||
case errors.As(err, &errNetOP) && errNetOP.Timeout():
|
||||
err = ErrRequestTimeout
|
||||
case errors.As(err, &netErr):
|
||||
err = ErrBadGateway
|
||||
case errors.Is(err, fasthttp.ErrBodyTooLarge):
|
||||
err = ErrRequestEntityTooLarge
|
||||
case errors.Is(err, fasthttp.ErrGetOnly):
|
||||
|
|
14
app_test.go
14
app_test.go
|
@ -268,6 +268,20 @@ func Test_App_serverErrorHandler_Internal_Error(t *testing.T) {
|
|||
utils.AssertEqual(t, c.fasthttp.Response.StatusCode(), StatusBadRequest)
|
||||
}
|
||||
|
||||
func Test_App_serverErrorHandler_Network_Error(t *testing.T) {
|
||||
t.Parallel()
|
||||
app := New()
|
||||
c := app.AcquireCtx(&fasthttp.RequestCtx{})
|
||||
defer app.ReleaseCtx(c)
|
||||
app.serverErrorHandler(c.fasthttp, &net.DNSError{
|
||||
Err: "test error",
|
||||
Name: "test host",
|
||||
IsTimeout: false,
|
||||
})
|
||||
utils.AssertEqual(t, string(c.fasthttp.Response.Body()), utils.StatusMessage(StatusBadGateway))
|
||||
utils.AssertEqual(t, c.fasthttp.Response.StatusCode(), StatusBadGateway)
|
||||
}
|
||||
|
||||
func Test_App_Nested_Params(t *testing.T) {
|
||||
t.Parallel()
|
||||
app := New()
|
||||
|
|
Loading…
Reference in New Issue