rpc: avoid unnecessary RST_STREAM, PING frames sent by client #33122
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Context from Cloudflare blog: https://blog.cloudflare.com/go-and-enhance-your-calm/#reading-bodies-in-go-can-be-unintuitive
We were able to reproduce the same issue discussed by Cloudflare in their recent blog post above using the
ethclient.Running the below script using the latest go-ethereum against RPC endpoints with HTTP2 defenses similar to Cloudflare's (i.e.
go run main.go --url https://api.avax-test.network/ext/bc/C/rpc) results in a number of GOAWAY errors due the client sending many unnecessary PING and RST_STREAM frames.Running the same script with the fix in this PR results shows that those GOAWAY errors to go away. 🙂