This commit is contained in:
WJQSERVER 2025-01-27 14:27:49 +08:00
parent 23fdd46b91
commit 3c76050f18
3 changed files with 13 additions and 35 deletions

View file

@ -47,9 +47,6 @@ func ChunkedProxyRequest(c *gin.Context, u string, cfg *config.Config, mode stri
method := c.Request.Method
logInfo("%s %s %s %s %s", c.ClientIP(), method, u, c.Request.Header.Get("User-Agent"), c.Request.Proto)
// 创建HTTP客户端
//client := &http.Client{}
// 发送HEAD请求, 预获取Content-Length
headReq, err := http.NewRequest("HEAD", u, nil)
if err != nil {
@ -108,42 +105,15 @@ func ChunkedProxyRequest(c *gin.Context, u string, cfg *config.Config, mode stri
c.Status(resp.StatusCode)
/*
if err := chunkedCopyResponseBody(c, resp.Body); err != nil {
logError("%s %s %s %s %s 响应复制错误: %v", c.ClientIP(), method, u, c.Request.Header.Get("User-Agent"), c.Request.Proto, err)
}
*/
// 使用固定32KB缓冲池
buffer := BufferPool.Get().([]byte)
defer BufferPool.Put(buffer)
if _, err := io.CopyBuffer(c.Writer, resp.Body, buffer); err != nil {
_, err = io.CopyBuffer(c.Writer, resp.Body, buffer)
if err != nil {
logError("%s %s %s %s %s 响应复制错误: %v", c.ClientIP(), method, u, c.Request.Header.Get("User-Agent"), c.Request.Proto, err)
return
} else {
c.Writer.Flush() // 确保刷入
}
}
/*
// 复制响应体
func chunkedCopyResponseBody(c *gin.Context, respBody io.Reader) error {
buf := make([]byte, chunkedBufferSize)
for {
n, err := respBody.Read(buf)
if n > 0 {
if _, err := c.Writer.Write(buf[:n]); err != nil {
return err
}
c.Writer.Flush() // 确保每次写入后刷新
}
if err != nil {
if err == io.EOF {
break
}
return err
}
}
return nil
}
*/