http2: avoid busy loop when ResponseHeaderTimeout is set
Don't keep reading from respHeaderRecv after the response headers
are received.
Fixes golang/go#49615.
Change-Id: Ib8126c954930011ac09b2cbc70bbbce76531b7db
Reviewed-on: https://go-review.googlesource.com/c/net/+/364574
Trust: Damien Neil <dneil@google.com>
Run-TryBot: Damien Neil <dneil@google.com>
TryBot-Result: Go Bot <gobot@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
diff --git a/http2/transport.go b/http2/transport.go
index b5e2ac6..9f31bf1 100644
--- a/http2/transport.go
+++ b/http2/transport.go
@@ -1313,6 +1313,7 @@
case <-respHeaderTimer:
return errTimeout
case <-respHeaderRecv:
+ respHeaderRecv = nil
respHeaderTimer = nil // keep waiting for END_STREAM
case <-cs.abort:
return cs.abortErr