diff --git a/src/net.h b/src/net.h index 5228c4fbd3..66868be7c8 100644 --- a/src/net.h +++ b/src/net.h @@ -548,8 +548,9 @@ public: std::vector vAddrToSend; std::unique_ptr m_addr_known{nullptr}; bool fGetAddr{false}; - std::chrono::microseconds m_next_addr_send GUARDED_BY(cs_sendProcessing){0}; - std::chrono::microseconds m_next_local_addr_send GUARDED_BY(cs_sendProcessing){0}; + Mutex m_addr_send_times_mutex; + std::chrono::microseconds m_next_addr_send GUARDED_BY(m_addr_send_times_mutex){0}; + std::chrono::microseconds m_next_local_addr_send GUARDED_BY(m_addr_send_times_mutex){0}; struct TxRelay { mutable RecursiveMutex cs_filter; diff --git a/src/net_processing.cpp b/src/net_processing.cpp index 9f9af0aa33..359b7d9843 100644 --- a/src/net_processing.cpp +++ b/src/net_processing.cpp @@ -4189,6 +4189,8 @@ bool PeerManagerImpl::SendMessages(CNode* pto) CNodeState &state = *State(pto->GetId()); // Address refresh broadcast + { + LOCK(pto->m_addr_send_times_mutex); if (fListen && pto->RelayAddrsWithConn() && !m_chainman.ActiveChainstate().IsInitialBlockDownload() && @@ -4249,6 +4251,7 @@ bool PeerManagerImpl::SendMessages(CNode* pto) if (pto->vAddrToSend.capacity() > 40) pto->vAddrToSend.shrink_to_fit(); } + } // pto->m_addr_send_times_mutex // Start block sync if (pindexBestHeader == nullptr)