This patch release fixes the control message length for the ECN control message on FreeBSD systems (#4110), which lead to sendmsg: invalid argument errors.
v0.39.0
New Features
quic-go now uses feeds ECN signals into its congestion controller (#4059). ECN is used by routers to signal congestion before queues overflow (and packets are dropped). When using ECN, there are a number of failure modes, which necessitates some rather complex validation logic, see section 13.4 of RFC 9000 for details. ECN support can be disabled by setting the QUIC_GO_DISABLE_ECN environment variable to true.
The HTTP/3 package introduced a http3.Error, making the errors returned by the http3 package more useful, and allowing easy assertions of the HTTP/3 error codes defined in RFC 9114: #4039
Other Changes
The key used to encrypt resumption tokens can now be configured using using Transport.TokenGeneratorKey: #4066
The RTT is now saved in session tickets, even when not using 0-RTT, allowing for faster session resumption: #4042
The reason for dial cancelations is now returned, when the context is canceled using a context.CancelCauseFunc: #4078
When using Go 1.21, make sure to build with (at least) Go 1.21.1, as this release fixes a remote-triggered panic in crypto/tls. See the release announcement for details.
Breaking Changes
Config.DisableVersionNegotiationPackets was moved to the Transport: #4047
Config.MaxTokenAge was moved to the Transport: #4084
Config.MaxRetryTokenAge was removed. The age limit for Retry tokens is now set to twice the handshake timeout: #4064
The handshake timeout is now set to twice the handshake idle timeout: #4063. For clients, it is recommend to limit the duration of the handshake by using setting the context on the Dial call.
The logging.Tracer and logging.ConnectionTracer are now structs (not interfaces): #4082
Please support quic-go!
Is your project / company relying on quic-go? Please consider funding the project. Any support is highly appreciated!
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.38.1 to 0.39.1.
Release notes
Sourced from github.com/quic-go/quic-go's releases.
... (truncated)
Commits
2b29074
fix IPv4 ECN control message length on FreeBSD (#4110)9a397ab
update gomock to v0.3.0 (#4087)4bdff39
README: add Hysteria (#4085)4a04618
ackhandler: fix ECN mangling detection when packets are lost (#4089)c12f425
ackhandler: don't fail ECN validation if less than 10 testing packets are los...9010cfd
remove unused unknownPacketHandler interface (#4093)22fb59e
create FUNDING.yml55eebd4
return the cancellation cause for cancelled dials (#4078)1affe38
move MaxTokenAge configuration option to the Transport (#4084)9b82196
make the logging.Tracer and logging.ConnectionTracer a struct (#4082)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