Improve read waiter interface

This commit is contained in:
世界
2023-05-09 21:59:57 +08:00
parent bd54608473
commit 22028602e8
4 changed files with 48 additions and 15 deletions

View File

@@ -197,14 +197,12 @@ func (d *DNS) newPacketConnection(ctx context.Context, conn N.PacketConn, readWa
var group task.Group
group.Append0(func(ctx context.Context) error {
var buffer *buf.Buffer
newBuffer := func() *buf.Buffer {
if buffer != nil {
buffer.Release()
}
readWaiter.InitializeReadWaiter(func() *buf.Buffer {
buffer = buf.NewSize(dns.FixedPacketSize)
buffer.FullReset()
return buffer
}
})
defer readWaiter.InitializeReadWaiter(nil)
for {
var message mDNS.Msg
var destination M.Socksaddr
@@ -223,11 +221,9 @@ func (d *DNS) newPacketConnection(ctx context.Context, conn N.PacketConn, readWa
}
destination = packet.Destination
} else {
destination, err = readWaiter.WaitReadPacket(newBuffer)
destination, err = readWaiter.WaitReadPacket()
if err != nil {
if buffer != nil {
buffer.Release()
}
buffer.Release()
cancel(err)
return err
}