diff options
author | Aliaksandr Valialkin <valyala@gmail.com> | 2015-11-12 14:01:04 +0200 |
---|---|---|
committer | Aliaksandr Valialkin <valyala@gmail.com> | 2015-11-12 14:01:04 +0200 |
commit | 6e4b32182e6d0c8d1c555dfabbc1ad913a5dda28 (patch) | |
tree | a45909a52c2e27a2fa2c3a5ad1f62f326e56f8d3 /workerpool.go | |
parent | Allow setting body length for Response.BodyStream via ResponseHeader.ContentL... (diff) | |
download | fasthttp-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.go | 3 |
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) { |