Fix buffer leak in mkcp transport protocol (#3347)

This commit is contained in:
yiitz 2025-05-18 03:54:42 +08:00 committed by GitHub
parent 1f2d76c066
commit d2b2f8c1f3
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 13 additions and 1 deletions

View File

@ -390,7 +390,9 @@ func (c *Connection) writeMultiBufferInternal(reader io.Reader) error {
}()
var b *buf.Buffer
defer b.Release()
defer func() {
b.Release()
}()
for {
for {
@ -537,6 +539,7 @@ func (c *Connection) Terminate() {
c.closer.Close()
c.sendingWorker.Release()
c.receivingWorker.Release()
c.output.Release()
}
func (c *Connection) HandleOption(opt SegmentOption) {

View File

@ -10,6 +10,7 @@ import (
type SegmentWriter interface {
Write(seg Segment) error
Release()
}
type SimpleSegmentWriter struct {
@ -36,6 +37,10 @@ func (w *SimpleSegmentWriter) Write(seg Segment) error {
return err
}
func (w *SimpleSegmentWriter) Release() {
w.buffer.Release()
}
type RetryableWriter struct {
writer SegmentWriter
}
@ -51,3 +56,7 @@ func (w *RetryableWriter) Write(seg Segment) error {
return w.writer.Write(seg)
})
}
func (w *RetryableWriter) Release() {
w.writer.Release()
}