From 5094f922db42bc39f63250bd11d2c4b5b98368ab Mon Sep 17 00:00:00 2001 From: Kevin Heifner Date: Mon, 6 Jan 2025 16:30:13 -0600 Subject: [PATCH] GH-1091 Handle repeated block_notice with request for blocks --- plugins/net_plugin/net_plugin.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/plugins/net_plugin/net_plugin.cpp b/plugins/net_plugin/net_plugin.cpp index 6df96558c4..40d1c6279b 100644 --- a/plugins/net_plugin/net_plugin.cpp +++ b/plugins/net_plugin/net_plugin.cpp @@ -920,6 +920,7 @@ namespace eosio { static constexpr uint16_t consecutive_block_nacks_threshold{3}; // stop sending blocks when reached uint16_t consecutive_blocks_nacks{0}; block_id_type last_block_nack; + block_id_type last_block_notice; connection_status get_status()const; @@ -3793,6 +3794,15 @@ namespace eosio { latest_blk_time = std::chrono::steady_clock::now(); if (my_impl->dispatcher.have_block(msg.id)) { my_impl->dispatcher.add_peer_block(msg.id, connection_id); + } else { + if (block_header::num_from_id(last_block_notice) == block_header::num_from_id(msg.id) - 1) { + send_block_nack({}); + request_message req; + req.req_blocks.mode = normal; + req.req_blocks.ids.push_back(last_block_notice); + enqueue( req ); + } + last_block_notice = msg.id; } }