Skip to content

Commit 9feaf22

Browse files
🚀 Improve error handling for net error(s) (gofiber#2421)
* improve error handling for net error(s) fixes: reverse proxy support gofiber#2419 * Update app.go Co-authored-by: leonklingele <git@leonklingele.de> * improve error handling for net error(s) fixes: reverse proxy support gofiber#2419 * improve error handling for net error(s) fixes: reverse proxy support gofiber#2419 * improve error handling for net error(s) fixes: reverse proxy support gofiber#2419 --------- Co-authored-by: leonklingele <git@leonklingele.de>
1 parent c4d2876 commit 9feaf22

File tree

2 files changed

+20
-1
lines changed

2 files changed

+20
-1
lines changed

app.go

+6-1
Original file line numberDiff line numberDiff line change
@@ -1052,13 +1052,18 @@ func (app *App) serverErrorHandler(fctx *fasthttp.RequestCtx, err error) {
10521052
c := app.AcquireCtx(fctx)
10531053
defer app.ReleaseCtx(c)
10541054

1055-
var errNetOP *net.OpError
1055+
var (
1056+
errNetOP *net.OpError
1057+
netErr net.Error
1058+
)
10561059

10571060
switch {
10581061
case errors.As(err, new(*fasthttp.ErrSmallBuffer)):
10591062
err = ErrRequestHeaderFieldsTooLarge
10601063
case errors.As(err, &errNetOP) && errNetOP.Timeout():
10611064
err = ErrRequestTimeout
1065+
case errors.As(err, &netErr):
1066+
err = ErrBadGateway
10621067
case errors.Is(err, fasthttp.ErrBodyTooLarge):
10631068
err = ErrRequestEntityTooLarge
10641069
case errors.Is(err, fasthttp.ErrGetOnly):

app_test.go

+14
Original file line numberDiff line numberDiff line change
@@ -268,6 +268,20 @@ func Test_App_serverErrorHandler_Internal_Error(t *testing.T) {
268268
utils.AssertEqual(t, c.fasthttp.Response.StatusCode(), StatusBadRequest)
269269
}
270270

271+
func Test_App_serverErrorHandler_Network_Error(t *testing.T) {
272+
t.Parallel()
273+
app := New()
274+
c := app.AcquireCtx(&fasthttp.RequestCtx{})
275+
defer app.ReleaseCtx(c)
276+
app.serverErrorHandler(c.fasthttp, &net.DNSError{
277+
Err: "test error",
278+
Name: "test host",
279+
IsTimeout: false,
280+
})
281+
utils.AssertEqual(t, string(c.fasthttp.Response.Body()), utils.StatusMessage(StatusBadGateway))
282+
utils.AssertEqual(t, c.fasthttp.Response.StatusCode(), StatusBadGateway)
283+
}
284+
271285
func Test_App_Nested_Params(t *testing.T) {
272286
t.Parallel()
273287
app := New()

0 commit comments

Comments
 (0)