aboutsummaryrefslogtreecommitdiff
path: root/workerpool.go
diff options
context:
space:
mode:
authorGravatar Aliaksandr Valialkin <valyala@gmail.com> 2015-11-12 14:01:04 +0200
committerGravatar Aliaksandr Valialkin <valyala@gmail.com> 2015-11-12 14:01:04 +0200
commit6e4b32182e6d0c8d1c555dfabbc1ad913a5dda28 (patch)
treea45909a52c2e27a2fa2c3a5ad1f62f326e56f8d3 /workerpool.go
parentAllow setting body length for Response.BodyStream via ResponseHeader.ContentL... (diff)
downloadfasthttp-6e4b32182e6d0c8d1c555dfabbc1ad913a5dda28.tar.gz
fasthttp-6e4b32182e6d0c8d1c555dfabbc1ad913a5dda28.tar.bz2
fasthttp-6e4b32182e6d0c8d1c555dfabbc1ad913a5dda28.zip
Fixed panic when WorkerFunc returns error and Conn is closed
Diffstat (limited to 'workerpool.go')
-rw-r--r--workerpool.go3
1 files changed, 2 insertions, 1 deletions
diff --git a/workerpool.go b/workerpool.go
index f874f11..34a846e 100644
--- a/workerpool.go
+++ b/workerpool.go
@@ -12,7 +12,7 @@ import (
// incoming connection.
type workerPool struct {
// Function for serving server connections.
- // It must close c before returning.
+ // It must leave c unclosed.
WorkerFunc func(c net.Conn) error
// Maximum number of workers to create.
@@ -164,6 +164,7 @@ func (wp *workerPool) workerFunc(ch *workerChan) {
if err = wp.WorkerFunc(c); err != nil {
wp.Logger.Printf("error when serving connection %q<->%q: %s", c.LocalAddr(), c.RemoteAddr(), err)
}
+ c.Close()
c = nil
if !wp.release(ch) {