Skip to content

Releases: quic-go/quic-go

v0.39.3

27 Oct 06:05
Compare
Choose a tag to compare

This patch contains two fixes:

  • The tls.Config returned by GetConfigForClient is now cloned before quic-go modifies it: #4133
  • The MinVersion on the tlsConfig returned by GetConfigForClient is not set to TLS 1.3, making sure that the TLS stack doesn't negotiate a TLS version older than 1.3: #4134

Full Changelog: v0.39.2...v0.39.3

v0.39.2

25 Oct 04:53
Compare
Choose a tag to compare

This patch release fixes the control message length for the ECN control message on Linux systems (#4127), which lead to sendmsg: invalid argument errors on some platforms.

v0.39.1

17 Oct 06:14
Compare
Choose a tag to compare

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

24 Sep 12:08
9a397ab
Compare
Choose a tag to compare

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!

Changelog

Full Changelog: v0.38.1...v0.39.0

v0.38.1

25 Aug 00:59
d228546
Compare
Choose a tag to compare

What's Changed

Full Changelog: v0.38.0...v0.38.1

v0.38.0

21 Aug 04:03
824fd8a
Compare
Choose a tag to compare

Generic Segmentation Offload (GSO)

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 (#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 (#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: #4013
  • crypto/tls errors are now returned on the TransportError and can be obtained using error assertions: #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: #3588
  • For small HTTP responses, the Content-Length header is automatically added: #3989

Changelog

New Contributors

Full Changelog: v0.37.1...v0.38.0

v0.37.6

19 Aug 23:21
Compare
Choose a tag to compare

This patch release contains a backport of #4038.

Full Changelog: v0.37.5...v0.37.6

v0.37.5

17 Aug 08:31
Compare
Choose a tag to compare

This patch release contains the backport of 3 fixes:

  • fix handshake failure if tls.Config.SessionTicketDisabled = false, but tls.Config.GetConfigForClient returns a config that disables session tickets: #4030
  • use the correct hash function for TLS_AES_256_GCM_SHA384: #4031
  • automatically set the tls.Config.ServerName: #4032

Full Changelog: v0.37.4...v0.37.5

v0.37.4

09 Aug 13:09
Compare
Choose a tag to compare

This release contains a fix for a last-minute breaking API change in Go 1.21: #4020

Full Changelog: v0.37.3...v0.37.4

v0.37.3

05 Aug 23:24
Compare
Choose a tag to compare

This patch release

  • fixes handling of ACK frames serialized after CRYPTO frames: #4018
  • sets a net.Conn on the tls.ClientHelloInfo used on GetCertificate and GetConfigForClient, for tls.Configs returned (recursively) from GetConfigForClient: #4016

Full Changelog: v0.37.2...v0.37.3