diff options
author | Aliaksandr Valialkin <valyala@gmail.com> | 2015-11-24 13:40:39 +0200 |
---|---|---|
committer | Aliaksandr Valialkin <valyala@gmail.com> | 2015-11-24 13:40:39 +0200 |
commit | cd4ace5409f1cd817bdd74f543dc5bee68161780 (patch) | |
tree | 99f5c2425419951d24da64683e22ec84f485f03b /workerpool.go | |
parent | Optimized AppendBytesStr - now it is 2x faster (diff) | |
download | fasthttp-cd4ace5409f1cd817bdd74f543dc5bee68161780.tar.gz fasthttp-cd4ace5409f1cd817bdd74f543dc5bee68161780.tar.bz2 fasthttp-cd4ace5409f1cd817bdd74f543dc5bee68161780.zip |
Close connection and release worker channel on panic in WorkerFunc
Diffstat (limited to 'workerpool.go')
-rw-r--r-- | workerpool.go | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/workerpool.go b/workerpool.go index a650eb6..0e65c52 100644 --- a/workerpool.go +++ b/workerpool.go @@ -150,14 +150,20 @@ func (wp *workerPool) release(ch *workerChan) bool { var workerChanPool sync.Pool func (wp *workerPool) workerFunc(ch *workerChan) { + var c net.Conn + var err error + defer func() { if r := recover(); r != nil { wp.Logger.Printf("panic: %s\nStack trace:\n%s", r, debug.Stack()) } + + if c != nil { + c.Close() + } + wp.release(ch) }() - var c net.Conn - var err error for c = range ch.ch { if c == nil { break |