v0.44 contains a lot of fixes related to HTTP Datagrams, new logic to determine (and configure) the QUIC packet size, as well as a significant speedup of the various parsers.
HTTP Datagram-related Fixes
The last release introduced support for HTTP Datagrams (RFC 9297). This release resolves a number of problems we discovered in the initial implementation:
reject sending of DATAGRAM frames that exceed the currently available MTU (quic-go/quic-go#4497)
http3: deadline errors are now ignored in stream state tracking (quic-go/quic-go#4495)
http3: refuse to send HTTP datagrams associated with a closed stream (quic-go/quic-go#4488)
http3: use the send stream context for tracking the stream state (quic-go/quic-go#4489)
http3: fix memory leak caused by stream state tracking (quic-go/quic-go#4523). Thanks to @GeorgeMac for debugging and fixing!
QUIC Packet Size and Path MTU Discovery
The initial packet size is now configurable via quic.Config. Most users should not use this config option, but instead rely on Path MTU discovery (quic-go/quic-go#4503)
The client's initial packet size was increased to 1280 bytes (quic-go/quic-go#4500)
Respect the client's max_udp_payload_size transport parameter (quic-go/quic-go#4514)
http3: ParseCapsule now returns an io.EOF (and not an io.UnexpectedEOF) if the underlying reader returns an io.EOF on the first byte (quic-go/quic-go#4476)
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Bumps github.com/quic-go/quic-go from 0.43.1 to 0.44.0.
Release notes
Sourced from github.com/quic-go/quic-go's releases.
... (truncated)
Commits
e2fbf3c
http3: fix memory leak in stream state tracking (#4523)f3cecf9
http3: rename ListenAndServe to ListenAndServeTLS (#4522)e41d1f9
logging / qlog: add support for DPLPMTUD (#4517)056a332
retry the PMTUD integration test up to 3 times (#4519)2557fb9
initialize the MTU discoverer when processing the transport parameters (#4514)508b402
update all golang.org/x dependencies (#4506)f3d76b3
make the initial packet size configurable (#4503)e90a0d4
increase initial packet size to 1280 bytes (for both IPv4 and IPv6) (#4500)d1c1f18
wire: write configured value of max_udp_payload_size transport parameter (#4501)66f968b
reject sending of DATAGRAM frames that exceed the current MTU (#4497)Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting
@dependabot rebase
.Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show