From d473d21c51d5b416dc5088850671cda8baf49f46 Mon Sep 17 00:00:00 2001 From: cryptocode Date: Sun, 3 Jan 2021 14:03:45 +0100 Subject: [PATCH] Fix wallet_republish crash during bootstrap --- nano/node/network.cpp | 31 +++++++++++++++++-------------- 1 file changed, 17 insertions(+), 14 deletions(-) diff --git a/nano/node/network.cpp b/nano/node/network.cpp index 68e39954..8425c4b6 100644 --- a/nano/node/network.cpp +++ b/nano/node/network.cpp @@ -219,22 +219,25 @@ void nano::network::flood_vote_pr (std::shared_ptr const & vote_a) void nano::network::flood_block_many (std::deque> blocks_a, std::function callback_a, unsigned delay_a) { - auto block_l (blocks_a.front ()); - blocks_a.pop_front (); - flood_block (block_l); if (!blocks_a.empty ()) { - std::weak_ptr node_w (node.shared ()); - node.alarm.add (std::chrono::steady_clock::now () + std::chrono::milliseconds (delay_a + std::rand () % delay_a), [node_w, blocks (std::move (blocks_a)), callback_a, delay_a]() { - if (auto node_l = node_w.lock ()) - { - node_l->network.flood_block_many (std::move (blocks), callback_a, delay_a); - } - }); - } - else if (callback_a) - { - callback_a (); + auto block_l (blocks_a.front ()); + blocks_a.pop_front (); + flood_block (block_l); + if (!blocks_a.empty ()) + { + std::weak_ptr node_w (node.shared ()); + node.alarm.add (std::chrono::steady_clock::now () + std::chrono::milliseconds (delay_a + std::rand () % delay_a), [node_w, blocks (std::move (blocks_a)), callback_a, delay_a]() { + if (auto node_l = node_w.lock ()) + { + node_l->network.flood_block_many (std::move (blocks), callback_a, delay_a); + } + }); + } + else if (callback_a) + { + callback_a (); + } } }