quic: don't defer MAX_STREAMS frames indefinitely Avoid a state where we can have a MAX_STREAMS frame to send, but do not send the frame for an indefinite amount of time. Conn.appendStreamFrames writes stream-related frames to the current packet. It also handles removing streams from the Conn when we no longer need to track their state. Removing streams can affect the frames we want to send. In particular, we may want to send a MAX_STREAMS to the peer indicating that it can open more streams because we've closed out some of the existing ones. Add MAX_STREAMS after removing streams, to ensure we pick up any changes to the sent value before adding it. This case doesn't show up in tests, because the test harness's idleness detection causes the Conn's event loop to run and notice the pending MAX_STREAMS frame. Changing tests to use testing/synctest (a followup CL) causes the problem to appear, because the event loop isn't run while the Conn is idle. Change-Id: Ia7394891317dae6ecfd529a9b3501ac082cb453e Reviewed-on: https://go-review.googlesource.com/c/net/+/714481 LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com> Auto-Submit: Damien Neil <dneil@google.com> Reviewed-by: Nicholas Husin <husin@google.com> Reviewed-by: Nicholas Husin <nsh@golang.org>
This repository holds supplementary Go networking packages.
This repository uses Gerrit for code changes. To learn how to submit changes to this repository, see https://go.dev/doc/contribute.
The git repository is https://go.googlesource.com/net.
The main issue tracker for the net repository is located at https://go.dev/issues. Prefix your issue with “x/net:” in the subject line, so it is easy to find.