diff --git a/nano/node/bootstrap.cpp b/nano/node/bootstrap.cpp index b4a1c7bd..27be5ff3 100644 --- a/nano/node/bootstrap.cpp +++ b/nano/node/bootstrap.cpp @@ -1748,7 +1748,7 @@ void nano::bootstrap_initiator::run_bootstrap () void nano::bootstrap_initiator::add_observer (std::function const & observer_a) { - std::lock_guard lock (mutex); + std::lock_guard lock (observers_mutex); observers.push_back (observer_a); } @@ -1778,6 +1778,7 @@ void nano::bootstrap_initiator::stop () void nano::bootstrap_initiator::notify_listeners (bool in_progress_a) { + std::lock_guard lock (observers_mutex); for (auto & i : observers) { i (in_progress_a); @@ -1791,7 +1792,7 @@ std::unique_ptr collect_seq_con_info (bootstrap_initiato size_t count = 0; size_t cache_count = 0; { - std::lock_guard guard (bootstrap_initiator.mutex); + std::lock_guard guard (bootstrap_initiator.observers_mutex); count = bootstrap_initiator.observers.size (); } { diff --git a/nano/node/bootstrap.hpp b/nano/node/bootstrap.hpp index 453638d3..53522094 100644 --- a/nano/node/bootstrap.hpp +++ b/nano/node/bootstrap.hpp @@ -254,6 +254,7 @@ private: bool stopped; std::mutex mutex; std::condition_variable condition; + std::mutex observers_mutex; std::vector> observers; boost::thread thread;