quic: fix wrong final size being used for RESET_STREAM frame

Previously, the final size in a RESET_STREAM frame was calculated as
min(s.outwin, s.out.end). This could result in a final size value that
is larger than the amount of data actually sent, such as when data is
buffered but blocked due to connection-level flow control.

Therefore, change RESET_STREAM frame to use s.outmaxsent as the final
size, which tracks the actual offset of data that has been sent.

This might perhaps explain the rare flakes that we have been observing,
where HTTP/3 tests would hang indefinitely.

For golang/go#78737

Change-Id: I31466712e9fe75d5fcb4461fb6905f4a6a6a6964
Reviewed-on: https://go-review.googlesource.com/c/net/+/774943
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>
Reviewed-by: Damien Neil <dneil@google.com>
2 files changed
tree: e972d1e48d36aa12c7b7d95bf4216ca3d30a2158
  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.