hackney 4.2.0 is out. It is a drop-in upgrade from 4.1; the changes are
additive so there are no API changes.
{hackney, "4.2.0"} %% rebar
{:hackney, "~> 4.2"} # mix
Added
- IPv6 for HTTP/3. The
familyconnect option (inet | inet6) is forwarded to
the QUIC layer, which resolves DNS and races addresses with Happy Eyeballs
(RFC 8305). IPv6 literals such as https://[::1]/ work too. - 0-RTT and session resumption for HTTP/3. The server session ticket is cached
per host and replayed on the next connection; a bodyless request can then be
sent as 0-RTT, otherwise the ticket gives a resumed handshake. On by default,
controlled by thezero_rttoption.
Fixed
- TLS now recovers from an expired cross-signed root instead of failing the
handshake (for example Let’s Encrypt’s ISRG Root X2 cross-signed by the
expired ISRG Root X1), across HTTP/1.1, HTTP/2, HTTP/3 and WebTransport. A
genuinely expired leaf or intermediate still fails. - A pooled connection that stopped between checkout and the request call could
leak exit:{normal, _} to the caller. The request, body and streaming calls
now return {error, closed} instead (#861). - A proxy host given as an atom (e.g. localhost) or a binary is accepted again
for the plain, connect and socks5 proxy tuples instead of being silently
ignored (#858).
This release also bumps quic to 1.6.3, h2 to 0.8.0 and webtransport to 0.3.1.
Changelog: hackney/NEWS.md at master · benoitc/hackney · GitHub
Release: Release 4.2.0 · benoitc/hackney · GitHub
Hex: hackney | Hex
Thanks to mrnovalles for the cross-sign fix.