Skip to content

v0.47.0

Compare
Choose a tag to compare
@marten-seemann marten-seemann released this 08 Sep 11:14
· 51 commits to master since this release
8fc04bf

New Features

This release adds support for HTTP/3 Trailers, for both the server and the client side (#4581, #4630, #4656, #4639). Trailers work exactly the same way as for HTTP/1.1 and HTTP/2.

A big thank you to @sudorandom for contributing this feature!

Fixes

  • idle timeout calculation when the peer sends a max_idle_timeout of 0 (or omits the transport parameter): #4666
  • fix handling of corrupted coalesced 1-RTT packets: #4663
  • qpack: don't reject literal field lines with name references if N bit is set to 1: quic-go/qpack#52
  • http3: correctly set the http.Response.ContentLength on responses that don't set the Content-Length header: #4645
  • http3: reject connection-specific header fields (Connection, Keep-Alive, Proxy-Connection, Transfer-Encoding, Upgrade and TE != "trailers"): #4646, #4655

Breaking Changes

  • quic.VersionNumber and logging.VersionNumber were removed: #4627

Heads-Up

@sukunrt recently discovered and reported a race condition in the new time.Timer stopping logic introduced in Go 1.23. This manifests as a connection deadlock in quic-go. See #4659 and golang/go#69312 for more details. The new behavior is enabled when compiling with Go 1.23.x, and when the Go version in go.mod is set to Go 1.23.x.

Until this issue is fixed, it is recommended to either use Go 1.22.x, or to use GODEBUG="asynctimerchan=1" when compiling quic-go.

Update (Oct 1st 2024)

The Go project backported the fix (golang/go#69333) to the 1.23 branch, and released it in Go 1.23.2. This resolves above-mentioned issue. quic-go can now be built with Go 1.23.2, without the need to set any GODEBUG flags.

Changelog

New Contributors

Full Changelog: v0.46.0...v0.47.0