From 2d73ef511d9289068997498687dd20c5c3d0373b Mon Sep 17 00:00:00 2001 From: Tal Rasha Date: Mon, 10 Mar 2025 14:05:31 +0800 Subject: [PATCH] Fix grpclite memory leak Co-authored-by: talrasha007 --- transport/v2raygrpclite/conn.go | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/transport/v2raygrpclite/conn.go b/transport/v2raygrpclite/conn.go index 5ab02569..5feafbb6 100644 --- a/transport/v2raygrpclite/conn.go +++ b/transport/v2raygrpclite/conn.go @@ -21,6 +21,7 @@ import ( var _ net.Conn = (*GunConn)(nil) type GunConn struct { + rawReader io.Reader reader *std_bufio.Reader writer io.Writer flusher http.Flusher @@ -31,9 +32,10 @@ type GunConn struct { func newGunConn(reader io.Reader, writer io.Writer, flusher http.Flusher) *GunConn { return &GunConn{ - reader: std_bufio.NewReader(reader), - writer: writer, - flusher: flusher, + rawReader: reader, + reader: std_bufio.NewReader(reader), + writer: writer, + flusher: flusher, } } @@ -46,6 +48,7 @@ func newLateGunConn(writer io.Writer) *GunConn { func (c *GunConn) setup(reader io.Reader, err error) { if reader != nil { + c.rawReader = reader c.reader = std_bufio.NewReader(reader) } c.err = err @@ -138,7 +141,7 @@ func (c *GunConn) FrontHeadroom() int { } func (c *GunConn) Close() error { - return common.Close(c.reader, c.writer) + return common.Close(c.rawReader, c.writer) } func (c *GunConn) LocalAddr() net.Addr {