quic: handle streams moving from the data queue to the meta queue

In Conn.appendStreamFrames, a stream can be moved from the
data queue (for streams with only flow-controlled frames to send)
to the metadata queue (for streams with non-flow-controlled frames
to send) if some other goroutine asynchronously modifies the
stream state.

Adjust the check at the end of this function to clear the needSend
bool only if queueMeta and queueData are both empty, to avoid
losing track of the need to send frames when this happens.

For golang/go#58547

Change-Id: Ib9ad3b01f543cd7673f5233ceb58b2db9adfff5a
Reviewed-on: https://go-review.googlesource.com/c/net/+/531656
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Jonathan Amsterdam <jba@google.com>
1 file changed
tree: 4590c1b78f286e5b90d3a53b02b634bc1e695f18
  1. bpf/
  2. context/
  3. dict/
  4. dns/
  5. html/
  6. http/
  7. http2/
  8. icmp/
  9. idna/
  10. internal/
  11. ipv4/
  12. ipv6/
  13. lif/
  14. nettest/
  15. netutil/
  16. proxy/
  17. publicsuffix/
  18. route/
  19. trace/
  20. webdav/
  21. websocket/
  22. xsrftoken/
  23. .gitattributes
  24. .gitignore
  25. codereview.cfg
  26. CONTRIBUTING.md
  27. go.mod
  28. go.sum
  29. LICENSE
  30. PATENTS
  31. README.md
README.md

Go Networking

Go Reference

This repository holds supplementary Go networking libraries.

Download/Install

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.

Report Issues / Send Patches

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.