go /
net /
6c4ac8bdbf06a105c4baf3dcda28bd9b0fb15588 http2: fix Transport race sending RST_STREAM while reading DATA on cancels
If the client canceled a request, the Transport would then send a
RST_STREAM, but also would close the Response.Body's pipe. Meanwhile,
the server's DATA response could already be on the wire in
flight. We'd then read it, attempt to write its bytes to the buffer,
find it already closed, bubble up that error, and ultimately close the
whole TCP connection (breaking all other open streams).
So, don't do that.
Keep track of which connections we've sent RST_STREAM to, and ignore
DATA frames on those streams.
Updates golang/go#16974 (fixes after bundle to std)
Change-Id: Ic29a3aefff5241146cd2ca80aafa35fc4fb18b6e
Reviewed-on: https://go-review.googlesource.com/32571
Reviewed-by: Tom Bergan <tombergan@google.com>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
2 files changed