You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Zeam's node handler already calls responder.sendError(constants.RPC_ERR_INVALID_REQUEST, ...), but the zig-libp2p QUIC responder path discarded that numeric code and only closed the response stream. Hive's mock reqresp peer expects an actual response chunk whose first byte is 1, so it observed the wrong wire behavior.
This PR wires the error code through zeam -> zig-libp2p -> QUIC response framing, producing a non-success reqresp response-code chunk before stream close.
Notes
The same Hive report also contains zeam failures where the client does not produce/catch up to non-genesis blocks within the harness timeout. I traced those separately through status-driven sync and block serving; they are not fixed by this narrow wire-protocol patch and likely need a follow-up focused on checkpoint-sync/status catch-up behavior.
The report also includes many non-zeam failures caused by other clients failing startup; this PR only changes zeam-owned behavior.
Validation
zig fmt --check pkgs/network/src/ethlibp2p.zig
git diff --check
zig build --fetch --summary none
zig-libp2p dependency branch: zig build test --summary all (508 passed, 2 skipped)
zeam zig build test --summary all was started with Zig 0.16.0, but this local container still cannot complete the repo target because rustup is absent (failed to spawn ... rustup: FileNotFound); lightweight Zig package groups reached before the slow proof/STF phase passed.
This PR addresses the reqresp wire-protocol failures where Hive expected INVALID_REQUEST response code 1 for invalid BlocksByRange requests. The zeam handler already selected code 1; zig-libp2p was dropping it and only closing the stream. Supporting dependency PR: blockblaz/zig-libp2p#300
zig-libp2p dependency: zig build test --summary all passed (508 passed, 2 skipped)
zeam full test target still cannot complete in this local image because rustup is missing; lightweight Zig package groups reached before the slow proof/STF phase passed.
Remaining from the Hive report: the zeam did not produce blocks / catch up from status failures appear to be a separate sync/catch-up root cause, not fixed by this PR.
zig fetch https://github.com/blockblaz/zig-libp2p/archive/refs/tags/v0.2.90.tar.gz passed and produced the committed hash
zig build --fetch --summary none passed
git diff --check passed
I could not run the full build/test suite in this image because PATH has Zig 0.15.2, while the branch/dependencies require Zig 0.16.0. I attempted to fetch the 0.16.0 toolchain side-by-side under /tmp, but the download was too slow for this Telegram turn, so I stopped it after the dependency update was pushed.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
INVALID_REQUESTresponse-code bytes for malformed/invalid reqresp requests instead of just closing the streamSupporting dependency PR: blockblaz/zig-libp2p#300
Hive context
Suite: https://hive.leanroadmap.org/suite.html?suiteid=1784546141-eb3090c7f9b766cd983e0fb631c26ad7.json&suitename=reqresp&client=zeam_devnet5
The zeam-owned reqresp failures include two explicit protocol assertions:
reqresp/blocks_by_range/zero_count: expectedINVALID_REQUESTreqresp/blocks_by_range/too_many_blocks: expectedINVALID_REQUESTZeam's node handler already calls
responder.sendError(constants.RPC_ERR_INVALID_REQUEST, ...), but the zig-libp2p QUIC responder path discarded that numeric code and only closed the response stream. Hive's mock reqresp peer expects an actual response chunk whose first byte is1, so it observed the wrong wire behavior.This PR wires the error code through zeam -> zig-libp2p -> QUIC response framing, producing a non-success reqresp response-code chunk before stream close.
Notes
The same Hive report also contains zeam failures where the client does not produce/catch up to non-genesis blocks within the harness timeout. I traced those separately through status-driven sync and block serving; they are not fixed by this narrow wire-protocol patch and likely need a follow-up focused on checkpoint-sync/status catch-up behavior.
The report also includes many non-zeam failures caused by other clients failing startup; this PR only changes zeam-owned behavior.
Validation
zig fmt --check pkgs/network/src/ethlibp2p.ziggit diff --checkzig build --fetch --summary nonezig build test --summary all(508 passed, 2 skipped)zig build test --summary allwas started with Zig 0.16.0, but this local container still cannot complete the repo target becauserustupis absent (failed to spawn ... rustup: FileNotFound); lightweight Zig package groups reached before the slow proof/STF phase passed.