Browse Source

fix buffer release time

Darien Raymond 7 years ago
parent
commit
334b7bf5ed
1 changed files with 5 additions and 2 deletions
  1. 5 2
      transport/pipe/impl.go

+ 5 - 2
transport/pipe/impl.go

@@ -107,7 +107,6 @@ func (p *pipe) writeMultiBufferInternal(mb buf.MultiBuffer) error {
 	defer p.Unlock()
 
 	if err := p.getState(false); err != nil {
-		mb.Release()
 		return err
 	}
 
@@ -122,7 +121,11 @@ func (p *pipe) WriteMultiBuffer(mb buf.MultiBuffer) error {
 
 	for {
 		err := p.writeMultiBufferInternal(mb)
-		if err == nil || err != errBufferFull {
+		if err == nil {
+			p.readSignal.Signal()
+			return nil
+		} else if err != errBufferFull {
+			mb.Release()
 			p.readSignal.Signal()
 			return err
 		}