aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorBrad Fitzpatrick <bradfitz@golang.org>2015-07-24 16:27:07 -0700
committerBrad Fitzpatrick <bradfitz@golang.org>2015-07-27 04:07:23 +0000
commitda87cf5dcf342a31c82ff7980bdc076558ff6674 (patch)
treeb71b7c1bfc1aa8d5e89e39ce6f90cd39eb793e6e /src
parent56a062400a8c4654eaca78c2926f2724a21cda61 (diff)
downloadgo-da87cf5dcf342a31c82ff7980bdc076558ff6674.tar.xz
net/http: fix a data race when Request.Cancel is used
The "add a Request.Cancel channel" change (https://golang.org/cl/11601) added support for "race free" cancellation, but introduced a data race. :) Noticed while running "go test -race net/http". The test is skipped in short mode, so we never saw it on the dashboard. Change-Id: Ica14579d8723f8f9d1691e8d56c30b585b332c64 Reviewed-on: https://go-review.googlesource.com/12663 Reviewed-by: Aaron Jacobs <jacobsa@google.com> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
Diffstat (limited to 'src')
-rw-r--r--src/net/http/transport.go1
1 files changed, 1 insertions, 0 deletions
diff --git a/src/net/http/transport.go b/src/net/http/transport.go
index 41fc6d0e62..41e02fc580 100644
--- a/src/net/http/transport.go
+++ b/src/net/http/transport.go
@@ -975,6 +975,7 @@ func (pc *persistConn) readLoop() {
// the underlying bufio reader.
select {
case <-rc.req.Cancel:
+ alive = false
pc.t.CancelRequest(rc.req)
case bodyEOF := <-waitForBodyRead:
pc.t.setReqCanceler(rc.req, nil) // before pc might return to idle pool