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