Fix buffer not released in batchLoopDarwin

This commit is contained in:
世界 2026-04-07 20:34:55 +08:00
parent 1664d083fb
commit 31c44bc478
No known key found for this signature in database
GPG key ID: CD109927C34A63C4
2 changed files with 4 additions and 0 deletions

View file

@ -184,6 +184,7 @@ func (m *Mixed) batchLoopDarwin(darwinTUN DarwinTUN) {
for _, buffer := range buffers { for _, buffer := range buffers {
packetSize := buffer.Len() packetSize := buffer.Len()
if packetSize < header.IPv4MinimumSize { if packetSize < header.IPv4MinimumSize {
buffer.Release()
continue continue
} }
if m.processPacket(buffer.Bytes()) { if m.processPacket(buffer.Bytes()) {
@ -197,6 +198,7 @@ func (m *Mixed) batchLoopDarwin(darwinTUN DarwinTUN) {
if err != nil { if err != nil {
m.logger.Trace(E.Cause(err, "batch write packet")) m.logger.Trace(E.Cause(err, "batch write packet"))
} }
buf.ReleaseMulti(writeBuffers)
} }
} }
} }

View file

@ -281,6 +281,7 @@ func (s *System) batchLoopDarwin(darwinTUN DarwinTUN) {
for _, buffer := range buffers { for _, buffer := range buffers {
packetSize := buffer.Len() packetSize := buffer.Len()
if packetSize < header.IPv4MinimumSize { if packetSize < header.IPv4MinimumSize {
buffer.Release()
continue continue
} }
if s.processPacket(buffer.Bytes()) { if s.processPacket(buffer.Bytes()) {
@ -294,6 +295,7 @@ func (s *System) batchLoopDarwin(darwinTUN DarwinTUN) {
if err != nil { if err != nil {
s.logger.Trace(E.Cause(err, "batch write packet")) s.logger.Trace(E.Cause(err, "batch write packet"))
} }
buf.ReleaseMulti(writeBuffers)
} }
} }
} }