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>
This commit is contained in:
Damien Neil
2021-11-16 13:04:45 -08:00
parent e8b54dec6f
commit 47ca1ff314

View File

@@ -1313,6 +1313,7 @@ func (cs *clientStream) writeRequest(req *http.Request) (err error) {
case <-respHeaderTimer:
return errTimeout
case <-respHeaderRecv:
respHeaderRecv = nil
respHeaderTimer = nil // keep waiting for END_STREAM
case <-cs.abort:
return cs.abortErr