Browse Source

Better imgproxyError handling

DarthSim 4 years ago
parent
commit
08b70d8b91
3 changed files with 9 additions and 9 deletions
  1. 1 1
      download.go
  2. 7 0
      errors.go
  3. 1 8
      server.go

+ 1 - 1
download.go

@@ -116,7 +116,7 @@ func checkTypeAndDimensions(r io.Reader) (imageType, error) {
 		return imageTypeUnknown, errSourceImageTypeNotSupported
 	}
 	if err != nil {
-		return imageTypeUnknown, newUnexpectedError(err.Error(), 0)
+		return imageTypeUnknown, wrapError(err, 0)
 	}
 
 	imgtype, imgtypeOk := imageTypes[meta.Format()]

+ 7 - 0
errors.go

@@ -55,6 +55,13 @@ func newUnexpectedError(msg string, skip int) *imgproxyError {
 	}
 }
 
+func wrapError(err error, skip int) *imgproxyError {
+	if ierr, ok := err.(*imgproxyError); ok {
+		return ierr
+	}
+	return newUnexpectedError(err.Error(), skip+1)
+}
+
 func callers(skip int) []uintptr {
 	stack := make([]uintptr, 10)
 	n := runtime.Callers(skip, stack)

+ 1 - 8
server.go

@@ -102,14 +102,7 @@ func withSecret(h routeHandler) routeHandler {
 }
 
 func handlePanic(reqID string, rw http.ResponseWriter, r *http.Request, err error) {
-	var (
-		ierr *imgproxyError
-		ok   bool
-	)
-
-	if ierr, ok = err.(*imgproxyError); !ok {
-		ierr = newUnexpectedError(err.Error(), 3)
-	}
+	ierr := wrapError(err, 3)
 
 	if ierr.Unexpected {
 		reportError(err, r)