|
|
@@ -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
|
|
|
}
|
|
|
}
|