Skip to content

Move to quic 2.0.0, h2 0.12.3 and webtransport 0.4.7 - #946

Merged
benoitc merged 4 commits into
masterfrom
deps/quic-2.0
Sep 24, 2026
Merged

benoitc merged 4 commits into
masterfrom
deps/quic-2.0

Conversation

@benoitc

@benoitc benoitc commented Sep 24, 2026

Copy link
Copy Markdown
Owner

Reverts the quic 1.10.0 bump from #942 and goes to quic 2.0.0 instead, now that it is on Hex. webtransport 0.4.7 comes with it, since 0.4.6 requires quic ~> 1.10 and the two cannot resolve together.

quic 2.0.0 reports a peer resetting a request stream, which earlier releases dropped. A caller reading a response with body/1 or stream_body/1 used to wait out its own timeout when the server reset the stream; those callers are answered now, with a test covering it. 2.0.0 also fixes a handshake that could stall when resuming from a cached session ticket, so the HTTP/3 tests no longer turn session resumption off and exercise it again.

h2 0.12.3 sends the DATA already buffered on a stream when a SETTINGS frame raises the initial window, so a request body queued against a zero window no longer stalls until an unrelated WINDOW_UPDATE arrives.

Verified against the released packages: 1114 tests pass with xref and dialyzer clean, and the HTTP/3 modules pass 6 of 6 runs under ERL_FLAGS="+S 1:1" with resumption on, which is the case that used to stall.

This reverts commit 84adda4, reversing
changes made to e494a51.
quic 2.0.0 reports a peer resetting a request stream, which earlier
releases dropped, so a caller reading a response with body/1 or
stream_body/1 waited out its own timeout when the server reset the
stream. Those callers are answered now, and a test covers it.

It also always sends a reason with its HTTP/3 close event, which
hackney already handles, and fixes a handshake that could stall when
resuming from a cached session ticket, so the HTTP/3 tests no longer
need to turn session resumption off.

webtransport 0.4.7 comes with it: 0.4.6 requires quic ~> 1.10, so the
two cannot resolve together.
0.12.3 sends the DATA already buffered on a stream when a SETTINGS
frame raises the initial window, so a request body queued against a
zero window no longer stalls until an unrelated WINDOW_UPDATE arrives.
The lock pins what a build of hackney itself resolves: quic 2.0.0,
h2 0.12.3 and webtransport 0.4.7. It was ignored, so a checkout
resolved afresh each time and CI could pick up a dependency release
that no commit had been tested against. A project depending on
hackney still resolves its own versions; a lock only binds its own
project.
@benoitc
benoitc merged commit 0b28c45 into master Sep 24, 2026
6 checks passed
@benoitc
benoitc deleted the deps/quic-2.0 branch September 24, 2026 07:08
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant