diff options
author | Suhas Daftuar <sdaftuar@gmail.com> | 2019-03-08 15:48:41 -0500 |
---|---|---|
committer | Suhas Daftuar <sdaftuar@gmail.com> | 2019-09-04 14:58:34 -0400 |
commit | e75c39cd425f8c4e5b6bbb2beecb9c80034fefe1 (patch) | |
tree | 697bd41fb179ec55aaea1ef76f015ade8ac33169 /src/net.cpp | |
parent | c4aa2ba82211ea5988ed7fe21e1b08bc3367e6d4 (diff) | |
download | bitcoin-e75c39cd425f8c4e5b6bbb2beecb9c80034fefe1.tar.xz |
Check that tx_relay is initialized before access
Diffstat (limited to 'src/net.cpp')
-rw-r--r-- | src/net.cpp | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/src/net.cpp b/src/net.cpp index 78b33954d6..9514da8809 100644 --- a/src/net.cpp +++ b/src/net.cpp @@ -499,9 +499,11 @@ void CNode::copyStats(CNodeStats &stats) X(nServices); X(addr); X(addrBind); - { + if (m_tx_relay != nullptr) { LOCK(m_tx_relay->cs_filter); stats.fRelayTxes = m_tx_relay->fRelayTxes; + } else { + stats.fRelayTxes = false; } X(nLastSend); X(nLastRecv); @@ -528,9 +530,11 @@ void CNode::copyStats(CNodeStats &stats) } X(m_legacyWhitelisted); X(m_permissionFlags); - { + if (m_tx_relay != nullptr) { LOCK(m_tx_relay->cs_feeFilter); stats.minFeeFilter = m_tx_relay->minFeeFilter; + } else { + stats.minFeeFilter = 0; } // It is common for nodes with good ping times to suddenly become lagged, @@ -818,11 +822,17 @@ bool CConnman::AttemptToEvictConnection() continue; if (node->fDisconnect) continue; - LOCK(node->m_tx_relay->cs_filter); + bool peer_relay_txes = false; + bool peer_filter_not_null = false; + if (node->m_tx_relay != nullptr) { + LOCK(node->m_tx_relay->cs_filter); + peer_relay_txes = node->m_tx_relay->fRelayTxes; + peer_filter_not_null = node->m_tx_relay->pfilter != nullptr; + } NodeEvictionCandidate candidate = {node->GetId(), node->nTimeConnected, node->nMinPingUsecTime, node->nLastBlockTime, node->nLastTXTime, HasAllDesirableServiceFlags(node->nServices), - node->m_tx_relay->fRelayTxes, node->m_tx_relay->pfilter != nullptr, node->addr, node->nKeyedNetGroup, + peer_relay_txes, peer_filter_not_null, node->addr, node->nKeyedNetGroup, node->m_prefer_evict}; vEvictionCandidates.push_back(candidate); } |