From a3fd81dfff0dcfca558b184f283a4e562565f6e4 Mon Sep 17 00:00:00 2001 From: Darien Raymond Date: Sun, 29 Jul 2018 03:38:54 +0200 Subject: [PATCH] rework multibuf copy --- transport/internet/kcp/connection.go | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/transport/internet/kcp/connection.go b/transport/internet/kcp/connection.go index 460aa2a4..f7f0be55 100644 --- a/transport/internet/kcp/connection.go +++ b/transport/internet/kcp/connection.go @@ -392,7 +392,11 @@ func (c *Connection) WriteMultiBuffer(mb buf.MultiBuffer) error { } }() - mbPtr := &mb + f := func(x *buf.MultiBuffer) buf.Supplier { + return func(bb []byte) (int, error) { + return x.Read(bb[:c.mss]) + } + }(&mb) for { for { @@ -400,13 +404,11 @@ func (c *Connection) WriteMultiBuffer(mb buf.MultiBuffer) error { return io.ErrClosedPipe } - if !c.sendingWorker.Push(func(bb []byte) (int, error) { - return mbPtr.Read(bb[:c.mss]) - }) { + if !c.sendingWorker.Push(f) { break } updatePending = true - if mbPtr.IsEmpty() { + if mb.IsEmpty() { return nil } }