commit | 02eb0f3c0a13d33cb696b10ab2d257f46c616a8a | [log] [tgz] |
---|---|---|
author | Damien Neil <dneil@google.com> | Tue Sep 12 15:13:59 2023 -0700 |
committer | Damien Neil <dneil@google.com> | Wed Sep 13 19:43:51 2023 +0000 |
tree | 4b5e58e2083b9d9d4c44e8d4a38c8e1e83ba3e0b | |
parent | 57bce0e9e9d357708bcc4486f0e8602471f59c78 [diff] |
quic: avoid deadlock when updating inbound conn-level flow control handleStreamBytesReadOffLoop sends a message to the conn indicating that we need to send a MAX_DATA update. Calling this with a stream's gate locked can lead to a deadlock, when the conn's loop is processing an inbound frame for the same stream: The conn can't acquire the stream's ingate, and the gate won't be unlocked until the conn processes another event from its queue. Move the handleStreamBytesReadOffLoop calls out of the gate. No test in this CL, but a following CL contains a test which reliably exercises the condition. For golang/go#58547 Change-Id: Ic98888947f67408a4a1f6f4a3aaf68c3a2fe8e7f Reviewed-on: https://go-review.googlesource.com/c/net/+/527580 Reviewed-by: Jonathan Amsterdam <jba@google.com> LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
This repository holds supplementary Go networking libraries.
The easiest way to install is to run go get -u golang.org/x/net
. You can also manually git clone the repository to $GOPATH/src/golang.org/x/net
.
This repository uses Gerrit for code changes. To learn how to submit changes to this repository, see https://golang.org/doc/contribute.html. The main issue tracker for the net repository is located at https://github.com/golang/go/issues. Prefix your issue with “x/net:” in the subject line, so it is easy to find.