aboutsummaryrefslogtreecommitdiff
path: root/workerpool.go
diff options
context:
space:
mode:
authorGravatar Aliaksandr Valialkin <valyala@gmail.com> 2015-11-24 13:40:39 +0200
committerGravatar Aliaksandr Valialkin <valyala@gmail.com> 2015-11-24 13:40:39 +0200
commitcd4ace5409f1cd817bdd74f543dc5bee68161780 (patch)
tree99f5c2425419951d24da64683e22ec84f485f03b /workerpool.go
parentOptimized AppendBytesStr - now it is 2x faster (diff)
downloadfasthttp-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.go10
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