quic: ensure Endpoint.Close waits for connection loops to exit

In CL 822984, Endpoint.Close was modified to only return when its listen
loop has actually exited.

However, if Endpoint.packetConn is closed prior to Endpoint.Close being
called (as in the case of net/http), Endpoint.Close can still return
prematurely before all connection loops exit.

Fix this by making sure that we also wait for all connection loops to
exit.

For golang/go#70914

Change-Id: I7dbc985475e845c89e2fa9a7755718326a6a6964
Reviewed-on: https://go-review.googlesource.com/c/net/+/823524
LUCI-TryBot-Result: golang-scoped@luci-project-accounts.iam.gserviceaccount.com <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: David Chase <drchase@google.com>
Reviewed-by: Damien Neil <dneil@google.com>
2 files changed
tree: 14d0e60dcd978a40f8fabbb2c067ad33d52c93ed
  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.