Browse Source

Better stacktrace of processing errorf

DarthSim 6 năm trước cách đây
mục cha
commit
023dcadc34
3 tập tin đã thay đổi với 9 bổ sung6 xóa
  1. 7 4
      errors.go
  2. 1 1
      process.go
  3. 1 1
      server.go

+ 7 - 4
errors.go

@@ -20,14 +20,17 @@ func newError(status int, msg string, pub string) *imgproxyError {
 	return &imgproxyError{status, msg, pub}
 }
 
-func newUnexpectedError(err error, skip int) *imgproxyError {
-	msg := fmt.Sprintf("Unexpected error: %s\n%s", err, stacktrace(skip+1))
-	return &imgproxyError{500, msg, "Internal error"}
+func newUnexpectedError(msg string, skip int) *imgproxyError {
+	return &imgproxyError{
+		500,
+		fmt.Sprintf("Unexpected error: %s\n%s", msg, stacktrace(skip+3)),
+		"Internal error",
+	}
 }
 
 func stacktrace(skip int) string {
 	callers := make([]uintptr, 10)
-	n := runtime.Callers(skip+1, callers)
+	n := runtime.Callers(skip, callers)
 
 	lines := make([]string, n)
 	for i, pc := range callers[:n] {

+ 1 - 1
process.go

@@ -1048,5 +1048,5 @@ func vipsApplyWatermark(img **C.VipsImage, opts *watermarkOptions) error {
 }
 
 func vipsError() error {
-	return errors.New(C.GoString(C.vips_error_buffer()))
+	return newUnexpectedError(C.GoString(C.vips_error_buffer()), 1)
 }

+ 1 - 1
server.go

@@ -240,7 +240,7 @@ func (h *httpHandler) ServeHTTP(rw http.ResponseWriter, r *http.Request) {
 				if ierr, ok := err.(*imgproxyError); ok {
 					respondWithError(reqID, rw, ierr)
 				} else {
-					respondWithError(reqID, rw, newUnexpectedError(err, 4))
+					respondWithError(reqID, rw, newUnexpectedError(err.Error(), 3))
 				}
 			} else {
 				panic(rerr)