v0.41.0
marten-seemann
released this
17 Jan 03:46
·
190 commits
to master
since this release
New Features
- 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 thehttp3.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 aConnContext
function, working analogously tohttp.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 thelogging.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!
Changelog
- congestion: don't use floating point math when calculating pacing times by @marten-seemann in #4148
- don't set the TLS version in the transport by @marten-seemann in #4135
- ackhandler: immediately acknowledge ECN-CE marked packets by @marten-seemann in #4147
- README: fix typo by @anderspitman in #4166
- fix flaky server test by @marten-seemann in #4167
- fix serialization of connection ID in filenames of qlog files by @marten-seemann in #4170
- logging: pass the packet number to ConnectionTracer.DroppedPacket by @marten-seemann in #4171
- interop: update Go version to 1.21.4 by @marten-seemann in #4179
- wire: reject NEW_CONNECTION_ID frames with zero-length conneciton IDs by @marten-seemann in #4180
- send large max_datagram_frame size, introduce a DatagramTooLargeError error by @chungthuang in #4143
- fuzzing: add transport parameter validation logic by @marten-seemann in #4175
- reduce calls to time.Now() calls in connection by @birneee in #4191
- http3: use the AdditionalSettings for requests by @marten-seemann in #4156
- README: add gost project by @char8x in #4154
- qtls: only attempt 0-RTT resumption for 0-RTT enabled session tickets by @marten-seemann in #4183
- examples: close listener, connection and stream in echo client and server by @rfyiamcool in #4188
- fuzzing: update Go version to 1.21 by @marten-seemann in #4192
- integrationtests: remove leftover code for Go 1.19 by @marten-seemann in #4193
- limit the number of queued PATH_RESPONSE frames to 256 by @marten-seemann in #4199
- don't retransmit PATH_CHALLENGE and PATH_RESPONSE frames by @marten-seemann in #4200
- ci: update golangci-lint to v1.55.2 by @marten-seemann in #4204
- fuzzing: add frame field validation logic by @marten-seemann in #4206
- http3: add remote address to request context by @oncilla in #4208
- http3: reset stream when a handler panics by @WeidiDeng in #4181
- http3: don't use error string as a format string by @nanokatze in #4211
- http3: improve debug message when determining the listener port fails by @nanokatze in #4214
- http3: return the context cancellation error from RoundTrip by @marten-seemann in #4203
- qlog: add support for alpn_information event by @birneee in #4216
- drop support for Go 1.20, build on Go 1.22rc1 by @marten-seemann in #4195
- utils: use time.Duration.Abs by @marten-seemann in #4217
- utils: switch to builtin min and max funtions by @marten-seemann in #4218
- http3: fix channel size in ListenAndServe by @narqo in #4219
- qtls: remove unneeded type alias for the tls.QUICEncryptionLevel by @marten-seemann in #4220
- discard DATAGRAM frames that don't fit into packets without an ACK by @marten-seemann in #4221
- queue up to 32 DATAGRAM frames to send by @marten-seemann in #4222
- use a ring buffer for the datagram queue by @marten-seemann in #4223
- handshake: remove unneeded mutex in cryptoSetup by @marten-seemann in #4227
- README: add RoadRunner to list of projects by @marten-seemann in #4226
- wire: use netip.AddrPort in the Preferred Address transport parameter by @marten-seemann in #4232
- ackhandler: refactor ACK queueing logic by @marten-seemann in #4225
- fix race condition when dropping Initial packet with short connection ID by @marten-seemann in #4236
- http3: add ConnContext to the server by @rthellend in #4230
- example: add config flag for TLS key and cert for the server by @marten-seemann in #4237
- wire: improve logging of connection ID retirements by @marten-seemann in #4241
- qlog: add a default tracer that writes to QLOGDIR by @birneee in #4233
- example: remove -v flag and custom logger configuration by @marten-seemann in #4242
- example: remove -qlog flag in favor of QLOGDIR by @marten-seemann in #4243
- http3: add a basic README by @marten-seemann in #4246
New Contributors
- @anderspitman made their first contribution in #4166
- @chungthuang made their first contribution in #4143
- @char8x made their first contribution in #4154
- @rfyiamcool made their first contribution in #4188
- @oncilla made their first contribution in #4208
- @nanokatze made their first contribution in #4211
- @narqo made their first contribution in #4219
- @rthellend made their first contribution in #4230
Full Changelog: v0.40.0...v0.41.0