http2: on write errors, close ClientConn before returning from RoundTrip
Deflakes TestTransportRoundtripCloseOnWriteError.
Fixes golang/go#48995.
Change-Id: I4384d9091d55307d15fbd44b1b8137dcc8939c86
Reviewed-on: https://go-review.googlesource.com/c/net/+/356029
Trust: Damien Neil <dneil@google.com>
Run-TryBot: Damien Neil <dneil@google.com>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Go Bot <gobot@golang.org>
diff --git a/http2/transport.go b/http2/transport.go
index 2ff6544..9b126ea 100644
--- a/http2/transport.go
+++ b/http2/transport.go
@@ -1395,7 +1395,6 @@
if cs.ID != 0 {
cc.forgetStreamID(cs.ID)
}
- close(cs.donec)
cc.wmu.Lock()
werr := cc.werr
@@ -1403,6 +1402,8 @@
if werr != nil {
cc.Close()
}
+
+ close(cs.donec)
}
// awaitOpenSlotForStream waits until len(streams) < maxConcurrentStreams.