When calling quic.Connection.SendDatagram, we now queue up to 32 DATAGRAMs before blocking this method: #4222. This should lead to significant performance improvements for applications that send a lot of datagrams.
DATAGRAM frames that don't fit into a packet (at the current MTU) are now dropped: #4221.
http3: The remote address (as a net.Addr) can now be obtained from the HTTP/3 request context using the http3.RemoteAddrContextKey: #4208. Thanks to @oncilla!
http3: When an http.Handler panics, the stream is now reset: #4181. Thanks to @WeidiDeng!
http3: The http3.Server now has a ConnContext function, working analogously to http.Server.ConnContext: #4230. Thanks to @rthellend!
logging: Information about the negotiated ALPN is logged using logging.ConnectionTracer.ChoseALPN: #4216. Thanks to @birneee!
qlog: The package now provides an implementation of the quic.Config.ConnectionTracer callback that reads the QLOGDIR environment variable, and writes qlogs to that directory. Thanks to @birneee!
Breaking Changes
This release drops support for Go 1.20 (#4195). We decided to support the old Go version a little bit earlier than usual (before the Go 1.22 release) this time, since this allowed us to completely remove our custom TLS fork that was necessary before crypto/tls gained QUIC support in Go 1.21. If you rely on Go 1.20, you can continue using the v0.40.1 release.
The DroppedPacket callback on the logging.ConnectionTracer now contains the packet number of the dropped packet, allowing for better logging of duplicate packets: #4171
Other Changes
Only attempt 0-RTT resumption if the session-ticket allowed 0-RTT: #4183
http3: The context cancelation error is now returned from RoundTrip: #4203
http3: use the AdditionalSettings for on HTTP/3 requests: #4156
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.40.1 to 0.41.0.
Release notes
Sourced from github.com/quic-go/quic-go's releases.
... (truncated)
Commits
d3c2020
http3: add a basic README (#4246)3449ace
example: remove -qlog flag in favor of QLOGDIR (#4243)1332752
example: remove -v flag and custom logger configuration (#4242)2cd9ed3
qlog: add a default tracer that writes to QLOGDIR (#4233)1e87489
wire: improve logging of connection ID retirements (#4241)0a922b4
example: add config flag for TLS key and cert for the server (#4237)3ff5029
http3: add ConnContext to the server (#4230)f1b3bdb
fix race condition when dropping Initial packet with short connection ID (#4236)54d6f7d
ackhandler: refactor ACK queueing logic (#4225)8cad3d2
wire: use netip.AddrPort to encode the IPs in the Preferred Address (#4232)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