Procházet zdrojové kódy

fix: recover panic

CaIon před 2 roky
rodič
revize
64862cd634
2 změnil soubory, kde provedl 11 přidání a 3 odebrání
  1. 9 1
      main.go
  2. 2 2
      middleware/recover.go

+ 9 - 1
main.go

@@ -104,7 +104,15 @@ func main() {
 
 	// Initialize HTTP server
 	server := gin.New()
-	server.Use(gin.Recovery())
+	server.Use(gin.CustomRecovery(func(c *gin.Context, err any) {
+		common.SysError(fmt.Sprintf("panic detected: %v", err))
+		c.JSON(http.StatusInternalServerError, gin.H{
+			"error": gin.H{
+				"message": fmt.Sprintf("Panic detected, error: %v. Please submit a issue here: https://github.com/Calcium-Ion/new-api", err),
+				"type":    "new_api_panic",
+			},
+		})
+	}))
 	// This will cause SSE not to work!!!
 	//server.Use(gzip.Gzip(gzip.DefaultCompression))
 	server.Use(middleware.RequestId())

+ 2 - 2
middleware/recover.go

@@ -16,8 +16,8 @@ func RelayPanicRecover() gin.HandlerFunc {
 				common.SysError(fmt.Sprintf("stacktrace from panic: %s", string(debug.Stack())))
 				c.JSON(http.StatusInternalServerError, gin.H{
 					"error": gin.H{
-						"message": fmt.Sprintf("Panic detected, error: %v. Please submit a issue here: https://github.com/songquanpeng/one-api", err),
-						"type":    "one_api_panic",
+						"message": fmt.Sprintf("Panic detected, error: %v. Please submit a issue here: https://github.com/Calcium-Ion/new-api", err),
+						"type":    "new_api_panic",
 					},
 				})
 				c.Abort()