aboutsummaryrefslogtreecommitdiff
path: root/fasthttputil
diff options
context:
space:
mode:
authorGravatar Aliaksandr Valialkin <valyala@gmail.com> 2016-02-04 18:56:58 +0200
committerGravatar Aliaksandr Valialkin <valyala@gmail.com> 2016-02-04 18:56:58 +0200
commit55b89a9a6ad804a2c20c6f58b86014b61ad6d372 (patch)
tree3ddfb7426af46fd39202f46d4f3e16f198d69452 /fasthttputil
parentEnabled virtual hosting support in example fileserver (diff)
downloadfasthttp-55b89a9a6ad804a2c20c6f58b86014b61ad6d372.tar.gz
fasthttp-55b89a9a6ad804a2c20c6f58b86014b61ad6d372.tar.bz2
fasthttp-55b89a9a6ad804a2c20c6f58b86014b61ad6d372.zip
fasthttputil: properly release pipeChan
Diffstat (limited to 'fasthttputil')
-rw-r--r--fasthttputil/pipe.go19
1 files changed, 12 insertions, 7 deletions
diff --git a/fasthttputil/pipe.go b/fasthttputil/pipe.go
index 6d01529..613cf28 100644
--- a/fasthttputil/pipe.go
+++ b/fasthttputil/pipe.go
@@ -181,11 +181,19 @@ func (c *pipeConn) release() {
if !c.rclosed {
c.rclosed = true
+ for b := range c.r.ch {
+ releaseByteBuffer(b)
+ if b == nil {
+ break
+ }
+ }
+ }
+ if c.r != nil {
releasePipeChan(c.r)
+ c.r = nil
+ c.w = nil
}
- c.r = nil
- c.w = nil
c.rlock.Unlock()
}
@@ -248,11 +256,8 @@ func acquirePipeChan() *pipeChan {
}
func releasePipeChan(ch *pipeChan) {
- for b := range ch.ch {
- releaseByteBuffer(b)
- if b == nil {
- break
- }
+ if len(ch.ch) > 0 {
+ panic("BUG: non-empty pipeChan released")
}
pipeChanPool.Put(ch)
}