quic: establish a "happened-before" relationship between stream write and read

This ensures that our race detector will not get tripped off in tests
where we do something like the following:

1. Client writes to a shared variable.
2. Client sends a request to a server.
3. Server handler reads the shared variable.

We are technically over-synchronizing right now by always using the
address of quicSync when calling runtime.RaceAcquire and
runtime.RaceReleaseMerge. However, that is fine for now since this
mostly matters just for testing, and creating a mapping of stream ID to
addressess are rather unclean.

For golang/go#78737

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

Go Networking

Go Reference

This repository holds supplementary Go networking packages.

Report Issues / Send Patches

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.