Browse Source

recovery: fix issue about syscall import on google app engine (#1640)

* recovery: fix issue about syscall import on google app engine

* add ToLower()

* the whole error message
thinkerou 7 years ago
parent
commit
7ec82ee894
2 changed files with 4 additions and 4 deletions
  1. 2 2
      recovery.go
  2. 2 2
      recovery_test.go

+ 2 - 2
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(strings.ToLower(se.Error()), "broken pipe") || strings.Contains(strings.ToLower(se.Error()), "connection reset by peer") {
 							brokenPipe = true
 						}
 					}

+ 2 - 2
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 {