Skip to content

v0.2.1

Choose a tag to compare

@ch4r10t33r ch4r10t33r released this 19 Jun 22:45
· 1 commit to main since this release

Fix: reqresp completes on empty/short responses instead of hanging to timeout

The reqresp requester only ever reacted to response bytes and ignored the stream FIN. When a responder closed the stream with no chunk — the libp2p "I don't have it" reply (zeam blocks_by_root for a root not in its DB, an empty blocks_by_range, the genesis anchor root every node requests) — the request never completed and hung until the embedder's request timeout (8 s in zeam), retrying forever. In a 3-node devnet this was a relentless ~60/min blocks_by_root retry storm that stalled finalization.

Fix: the requester now completes via zquic v1.7.42's rawAppStreamFullyReceived (FIN seen and all bytes up to the final size contiguously reassembled) — empty/complete responses finish in milliseconds; large in-flight responses are never truncated by a FIN that races ahead of the cwnd-queued payload.

  • Bumps zquic to v1.7.42.
  • Tests: empty-response-ends-fast regression; the 300 KB reqresp test still passes (no truncation).

Full diff: v0.2.0...v0.2.1