quic: avoid busy-loop when keep-alive is blocked by congestion control When a connection's keep-alive timer expires, we send a PING frame. Sending an ack-eliciting frame such as a PING clears the idle timer. However, if the frame could not be sent (due to being blocked by congestion control, for example), the keep-alive timer was not cleared resulting in the connection event loop busy-waiting on the timer. Now, when the keep-alive timer expires we clear it immediately and set a flag indicating that we want to send a keep-alive. Minor related fix: Disable the keep-alive and idle timers when entering the closing/draining states. (We never set these timers when in these states, but we failed to clear them on entry.) Change-Id: I9f3f2327f2138273b7e10c4185cf9c176a6a6964 Reviewed-on: https://go-review.googlesource.com/c/net/+/801882 LUCI-TryBot-Result: golang-scoped@luci-project-accounts.iam.gserviceaccount.com <golang-scoped@luci-project-accounts.iam.gserviceaccount.com> Reviewed-by: Nicholas Husin <husin@google.com> Auto-Submit: Damien Neil <dneil@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.