]> Cypherpunks repositories - gostls13.git/commitdiff
net/http: fix flaky TestTransportCancelBeforeResponseHeaders test
authorBrad Fitzpatrick <bradfitz@golang.org>
Wed, 6 Jan 2016 19:52:51 +0000 (19:52 +0000)
committerBrad Fitzpatrick <bradfitz@golang.org>
Wed, 6 Jan 2016 21:01:08 +0000 (21:01 +0000)
Add a couple more cases where we convert random network I/O errors
into errRequestCanceled if the request was forcefully aborted.

It failed ~1/1000 times without -race, or very easily with -race.
(due to -race randomizing some scheduling)

Fixes #11894

Change-Id: Ib1c123ce1eebdd88642da28a5948ca4f30581907
Reviewed-on: https://go-review.googlesource.com/18287
Reviewed-by: Russ Cox <rsc@golang.org>
src/net/http/transport.go
src/net/http/transport_test.go

index 6ca1c5a9fd558ea5d7221397dde290f110254637..01e3a05a3a9a9f589777e2a9bd1d956f9c9b71e8 100644 (file)
@@ -1423,6 +1423,9 @@ WaitResponse:
                select {
                case err := <-writeErrCh:
                        if err != nil {
+                               if pc.isCanceled() {
+                                       err = errRequestCanceled
+                               }
                                re = responseAndError{err: beforeRespHeaderError{err}}
                                pc.close(fmt.Errorf("write error: %v", err))
                                break WaitResponse
@@ -1446,6 +1449,9 @@ WaitResponse:
                        re = responseAndError{err: errTimeout}
                        break WaitResponse
                case re = <-resc:
+                       if re.err != nil && pc.isCanceled() {
+                               re.err = errRequestCanceled
+                       }
                        break WaitResponse
                case <-cancelChan:
                        pc.t.CancelRequest(req.Request)
index 9b4802f2aa87b67309b4bdb577ac2eda6abb9f40..46e330315b78de898d8e52533c7c49b9c384ec87 100644 (file)
@@ -1649,7 +1649,6 @@ func TestCancelRequestWithChannelBeforeDo(t *testing.T) {
 
 // Issue 11020. The returned error message should be errRequestCanceled
 func TestTransportCancelBeforeResponseHeaders(t *testing.T) {
-       setFlaky(t, 11894)
        defer afterTest(t)
 
        serverConnCh := make(chan net.Conn, 1)