aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn Newbery <john@johnnewbery.com>2021-03-29 11:36:19 +0100
committerJohn Newbery <john@johnnewbery.com>2021-03-29 12:15:23 +0100
commit4ad4abcf07efefafd439b28679dff8d6bbf62943 (patch)
tree849b342a78caddc23bce900179e4193348c73965
parentc02fa47baa517e17b5c43bde3902b1e410c1b93f (diff)
[net] Change addr send times fields to be guarded by new mutex
-rw-r--r--src/net.h5
-rw-r--r--src/net_processing.cpp3
2 files changed, 6 insertions, 2 deletions
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<CAddress> vAddrToSend;
std::unique_ptr<CRollingBloomFilter> 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)