This release re-enables GSO by default. We shipped GSO support in v0.36.0 (see the release notes for that release for an explanation of what GSO is), but had to disable it due to problems in certain configurations and on certain platforms. We believe that we now manage to properly detect these and automatically fall back to the non-GSO code path (quic-go/quic-go#4005). That said, there are a lot of different systems and configurations around, and kernel GSO support seems to be a bit brittle, so if you encounter any problems, please let us know in an issue.
Demultiplexing QUIC
The QUIC header is designed such that it can easily be demultiplexed from other common UDP-based protocols, such STUN, RTP, TURN, DTLS, etc. (see RFC 9443 for details). In this release, we added a Transport.ReadNonQUICPacket method (quic-go/quic-go#3992) that allows the application to retrieve non-QUIC packets arriving on the underlying UDP socket. The existing Transport.WriteTo can be used to send (non-QUIC) packets.
Other Notable Changes
Support for QUIC Datagrams (RFC 9221) is now saved in the session ticket and can be used when doing 0-RTT resumption: quic-go/quic-go#4013
crypto/tls errors are now returned on the TransportError and can be obtained using error assertions: quic-go/quic-go#4015
The code point for HTTP datagrams (RFC 9297) was changed from the value used for draft versions to the value used in the RFC: quic-go/quic-go#3588
For small HTTP responses, the Content-Length header is automatically added: #3989
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.35.1 to 0.38.1.
Release notes
Sourced from github.com/quic-go/quic-go's releases.
... (truncated)
Commits
d228546
remove the port from the hostname used for tls.Config.ServerName (#4046)f633dca
update qtls to v0.3.3 (#4044)8d91ad9
move QUIC_GO_DISABLE_GSO check out of init (#4041)824fd8a
http3: automatically add content-length for small responses (#3989)ced65c0
wire: always set the QUIC bit for Version Negotiation packets (#3991)f689a5d
ci: build interop Docker image for pushes to master, and for releases (#4035)fe3c4f2
add a method to retrieve non-QUIC packets from the Transport (#3992)6880f88
save the max_datagram_frame_size transport parameter in the session ticket (#...443c614
protocol: add string representation for ECN values (#4008)5c5db8c
reassemble post-handshake TLS messages before passing them to crypto/tls (#4038)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