Skip to content

transport,deps: bump zquic to v1.5.0#55

Merged
ch4r10t33r merged 1 commit into
mainfrom
chore/zquic-v1.5.0
Apr 16, 2026
Merged

transport,deps: bump zquic to v1.5.0#55
ch4r10t33r merged 1 commit into
mainfrom
chore/zquic-v1.5.0

Conversation

@ch4r10t33r
Copy link
Copy Markdown
Collaborator

Summary

Updates the zquic dependency from v1.2.1 to v1.5.0, picking up the security and correctness fixes landed in v1.3.x–v1.5.0:

  • Retry token replay window (30 s) with hourly retry_secret rotation — bounds the blast radius of a leaked secret from "forever" to ~1 hour + 30 s (zquic #108).
  • FINAL_SIZE_ERROR enforcement cross-checking RESET_STREAM final_size against any prior STREAM+FIN on the same stream (RFC 9000 §3.5/§11.3, zquic #109).
  • Non-minimal varint rejection per RFC 9000 §16 (zquic #110).
  • Active connection ID limit enforced per RFC 9000 §5.1.1 (zquic #111).
  • ACK range underflow returns FrameEncodingError instead of saturating (RFC 9000 §19.3, zquic #112).
  • Stream-initiator violations on STREAM frames are rejected (RFC 9000 §19.8, zquic #113).
  • Coalesced packet parser hardening (zquic #115).

API adjustment in src/transport/zquic_quic_shim.zig

rawAllocateNextLocalBidiStream / rawAllocateNextLocalUniStream now return OpenLocalStreamError!u64 instead of u64 — they enforce the peer-advertised initial_max_streams_*. Added try at both call sites in streamMake / streamMakeUni so StreamLimitExceeded propagates as a stream-create failure.

No other v1.5.0 API breaks bite us: LossDetector.onAck, AckFrame.parse, and varint.DecodeError.NonMinimalEncoding live in layers that zig-ethp2p doesn't call directly.

Test plan

  • zig fmt --check .
  • zig build test (150 passed)
  • zig build test-broadcast (54 passed)
  • zig build test-sim-rs (22 passed)
  • zig build test-sim-gossipsub (23 passed)
  • zig build test-quic (44 passed)

Pulls in the v1.3.0..v1.5.0 security and correctness fixes:
- Retry token replay window (30 s) with hourly secret rotation (zquic #108).
- FINAL_SIZE_ERROR enforcement cross-checking RESET_STREAM vs STREAM+FIN
  final sizes (zquic #109).
- Non-minimal varint rejection per RFC 9000 §16 (zquic #110).
- Active connection ID limit enforced per RFC 9000 §5.1.1 (zquic #111).
- ACK range underflow returns FrameEncodingError instead of saturating
  (zquic #112).
- Stream-initiator violations on STREAM frames are rejected (zquic #113).
- Coalesced packet parser hardening (zquic #115).

API adjustment: rawAllocateNextLocalBidiStream and
rawAllocateNextLocalUniStream now return OpenLocalStreamError!u64
instead of u64. Add `try` at the two call sites in zquic_quic_shim so
StreamLimitExceeded propagates as a stream create failure.

Tests: zig fmt --check . plus test, test-broadcast, test-sim-rs,
test-sim-gossipsub and test-quic all pass locally.
@ch4r10t33r ch4r10t33r merged commit 4443e79 into main Apr 16, 2026
6 checks passed
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