Просмотр исходного кода

fix: Prevent resource leaks by adding body close in stream handlers

1808837298@qq.com 1 год назад
Родитель
Сommit
558e625a01

+ 1 - 1
relay/channel/claude/relay-claude.go

@@ -506,7 +506,7 @@ func ClaudeStreamHandler(c *gin.Context, resp *http.Response, info *relaycommon.
 		}
 		}
 	}
 	}
 	helper.Done(c)
 	helper.Done(c)
-	resp.Body.Close()
+	//resp.Body.Close()
 	return nil, usage
 	return nil, usage
 }
 }
 
 

+ 1 - 1
relay/channel/gemini/relay-gemini.go

@@ -534,7 +534,7 @@ func GeminiChatStreamHandler(c *gin.Context, resp *http.Response, info *relaycom
 		}
 		}
 	}
 	}
 	helper.Done(c)
 	helper.Done(c)
-	resp.Body.Close()
+	//resp.Body.Close()
 	return nil, usage
 	return nil, usage
 }
 }
 
 

+ 1 - 1
relay/channel/openai/relay-openai.go

@@ -249,7 +249,7 @@ func OaiStreamHandler(c *gin.Context, resp *http.Response, info *relaycommon.Rel
 
 
 	helper.Done(c)
 	helper.Done(c)
 
 
-	resp.Body.Close()
+	//resp.Body.Close()
 	return nil, usage
 	return nil, usage
 }
 }
 
 

+ 4 - 1
relay/helper/stream_scanner.go

@@ -15,7 +15,10 @@ import (
 )
 )
 
 
 func StreamScannerHandler(c *gin.Context, resp *http.Response, info *relaycommon.RelayInfo, dataHandler func(data string) bool) {
 func StreamScannerHandler(c *gin.Context, resp *http.Response, info *relaycommon.RelayInfo, dataHandler func(data string) bool) {
-
+	if resp == nil {
+		return
+	}
+	defer resp.Body.Close()
 	streamingTimeout := time.Duration(constant.StreamingTimeout) * time.Second
 	streamingTimeout := time.Duration(constant.StreamingTimeout) * time.Second
 	if strings.HasPrefix(info.UpstreamModelName, "o1") || strings.HasPrefix(info.UpstreamModelName, "o3") {
 	if strings.HasPrefix(info.UpstreamModelName, "o1") || strings.HasPrefix(info.UpstreamModelName, "o3") {
 		// twice timeout for thinking model
 		// twice timeout for thinking model