net/http/fcgi: fix race between serveRequest and cleanUp
Fixes #11552
Change-Id: I87904e9e3fb4bd1fb4c7075a4e2d0151e5bd37df
Reviewed-on: https://go-review.googlesource.com/11890
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
Reviewed-by: Mikio Hara <mikioh.mikioh@gmail.com>
Reviewed-by: David Crawshaw <crawshaw@golang.org>
diff --git a/src/net/http/fcgi/child.go b/src/net/http/fcgi/child.go
index aba71cd..da824ed 100644
--- a/src/net/http/fcgi/child.go
+++ b/src/net/http/fcgi/child.go
@@ -289,6 +289,8 @@
}
func (c *child) cleanUp() {
+ c.mu.Lock()
+ defer c.mu.Unlock()
for _, req := range c.requests {
if req.pw != nil {
// race with call to Close in c.serveRequest doesn't matter because