diff options
author | Aliaksandr Valialkin <valyala@gmail.com> | 2016-02-04 18:56:58 +0200 |
---|---|---|
committer | Aliaksandr Valialkin <valyala@gmail.com> | 2016-02-04 18:56:58 +0200 |
commit | 55b89a9a6ad804a2c20c6f58b86014b61ad6d372 (patch) | |
tree | 3ddfb7426af46fd39202f46d4f3e16f198d69452 /fasthttputil | |
parent | Enabled virtual hosting support in example fileserver (diff) | |
download | fasthttp-55b89a9a6ad804a2c20c6f58b86014b61ad6d372.tar.gz fasthttp-55b89a9a6ad804a2c20c6f58b86014b61ad6d372.tar.bz2 fasthttp-55b89a9a6ad804a2c20c6f58b86014b61ad6d372.zip |
fasthttputil: properly release pipeChan
Diffstat (limited to 'fasthttputil')
-rw-r--r-- | fasthttputil/pipe.go | 19 |
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) } |