Skip to content

Send not_found for unservable get_data. - #1104

Closed
echennells wants to merge 1 commit into
libbitcoin:masterfrom
echennells:ech99-send-not-found
Closed

Send not_found for unservable get_data.#1104
echennells wants to merge 1 commit into
libbitcoin:masterfrom
echennells:ech99-send-not-found

Conversation

@echennells

Copy link
Copy Markdown
Contributor

A get_data naming a block or transaction the node cannot serve stops the channel. bitcoind replies notfound and stays connected. Implements #986.

Three sites now reply and resume the send loop: a pruned block, a block absent from the archive, and an absent transaction. Each item is answered on the send completion handler, as a block is, so nothing is produced until the prior write completes.

Block-out protocols are selected on send_headers, so a peer above bip37 reaches protocol_block_out_106 through the default arm. not_found is undefined below bip37, so that protocol captures the negotiated level at construction and retains the stop below it. protocol_transaction_out_106 attaches only above bip37 and asserts.

A hash resolving to no header is tested before the pruned check, as the checkpoint height query faults the store on a terminal link.

Requests remain bounded by max_inventory at deserialization, so no limit is added; an unservable item is now logged per item, where the channel previously stopped on the first.

Two cases cover the block sites. The transaction site needs the fixture to negotiate relay, which it cannot yet.

@echennells

Copy link
Copy Markdown
Contributor Author

Closing — not ready to submit yet.

@echennells echennells closed this Aug 25, 2026
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