From e6e3596e1da13f7a8b776d914af353241bb63896 Mon Sep 17 00:00:00 2001 From: thinkerou Date: Mon, 12 Nov 2018 18:06:00 +0800 Subject: [PATCH 1/3] recovery: fix issue about syscall import on google app engine --- recovery.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/recovery.go b/recovery.go index e788cc479c..7a7d3fa3a8 100644 --- a/recovery.go +++ b/recovery.go @@ -15,7 +15,7 @@ import ( "net/http/httputil" "os" "runtime" - "syscall" + "strings" "time" ) @@ -45,7 +45,7 @@ func RecoveryWithWriter(out io.Writer) HandlerFunc { var brokenPipe bool if ne, ok := err.(*net.OpError); ok { if se, ok := ne.Err.(*os.SyscallError); ok { - if se.Err == syscall.EPIPE || se.Err == syscall.ECONNRESET { + if strings.Contains(se.Error(), "broken pipe") || strings.Contains(se.Error(), "connection reset") { brokenPipe = true } } From 34285b75b8588872bcfd477de0d193aed961e80e Mon Sep 17 00:00:00 2001 From: thinkerou Date: Mon, 12 Nov 2018 18:25:37 +0800 Subject: [PATCH 2/3] add ToLower() --- recovery.go | 2 +- recovery_test.go | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/recovery.go b/recovery.go index 7a7d3fa3a8..226780e27b 100644 --- a/recovery.go +++ b/recovery.go @@ -45,7 +45,7 @@ func RecoveryWithWriter(out io.Writer) HandlerFunc { var brokenPipe bool if ne, ok := err.(*net.OpError); ok { if se, ok := ne.Err.(*os.SyscallError); ok { - if strings.Contains(se.Error(), "broken pipe") || strings.Contains(se.Error(), "connection reset") { + if strings.Contains(strings.ToLower(se.Error()), "broken pipe") || strings.Contains(strings.ToLower(se.Error()), "connection reset") { brokenPipe = true } } diff --git a/recovery_test.go b/recovery_test.go index cafaee9122..c9fb29ce55 100644 --- a/recovery_test.go +++ b/recovery_test.go @@ -84,8 +84,8 @@ func TestPanicWithBrokenPipe(t *testing.T) { const expectCode = 204 expectMsgs := map[syscall.Errno]string{ - syscall.EPIPE: "broken pipe", - syscall.ECONNRESET: "connection reset", + syscall.EPIPE: "Broken pipe", + syscall.ECONNRESET: "connection reset by peer", } for errno, expectMsg := range expectMsgs { From 2860b8c79e68ac2e5ea237cb3d980dff0f23f9c4 Mon Sep 17 00:00:00 2001 From: thinkerou Date: Tue, 13 Nov 2018 18:33:27 +0800 Subject: [PATCH 3/3] the whole error message --- recovery.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recovery.go b/recovery.go index 226780e27b..f06ad56b28 100644 --- a/recovery.go +++ b/recovery.go @@ -45,7 +45,7 @@ func RecoveryWithWriter(out io.Writer) HandlerFunc { var brokenPipe bool if ne, ok := err.(*net.OpError); ok { if se, ok := ne.Err.(*os.SyscallError); ok { - if strings.Contains(strings.ToLower(se.Error()), "broken pipe") || strings.Contains(strings.ToLower(se.Error()), "connection reset") { + if strings.Contains(strings.ToLower(se.Error()), "broken pipe") || strings.Contains(strings.ToLower(se.Error()), "connection reset by peer") { brokenPipe = true } }