diff options
author | Niklas Gögge <n.goeggi@gmail.com> | 2021-06-25 14:26:57 +0200 |
---|---|---|
committer | Niklas Gögge <n.goeggi@gmail.com> | 2021-09-28 22:11:30 +0200 |
commit | 0dc8bf5b925ca876c0b1a100e426056d741aafde (patch) | |
tree | d156af2272aaf719cfcf5de81fbebdf9ef7d9194 /src/net_processing.cpp | |
parent | efa227f5df5f5a9669dec5f1d574cf22d3c0903f (diff) |
[net processing] Dont request compact blocks in blocks-only mode
Diffstat (limited to 'src/net_processing.cpp')
-rw-r--r-- | src/net_processing.cpp | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/src/net_processing.cpp b/src/net_processing.cpp index e130272ff1..008b4d679c 100644 --- a/src/net_processing.cpp +++ b/src/net_processing.cpp @@ -884,6 +884,12 @@ bool PeerManagerImpl::BlockRequested(NodeId nodeid, const CBlockIndex& block, st void PeerManagerImpl::MaybeSetPeerAsAnnouncingHeaderAndIDs(NodeId nodeid) { AssertLockHeld(cs_main); + + // Never request high-bandwidth mode from peers if we're blocks-only. Our + // mempool will not contain the transactions necessary to reconstruct the + // compact block. + if (m_ignore_incoming_txs) return; + CNodeState* nodestate = State(nodeid); if (!nodestate || !nodestate->fSupportsDesiredCmpctVersion) { // Never ask from peers who can't provide witnesses. @@ -2165,7 +2171,11 @@ void PeerManagerImpl::ProcessHeadersMessage(CNode& pfrom, const Peer& peer, pindexLast->GetBlockHash().ToString(), pindexLast->nHeight); } if (vGetData.size() > 0) { - if (nodestate->fSupportsDesiredCmpctVersion && vGetData.size() == 1 && mapBlocksInFlight.size() == 1 && pindexLast->pprev->IsValid(BLOCK_VALID_CHAIN)) { + if (!m_ignore_incoming_txs && + nodestate->fSupportsDesiredCmpctVersion && + vGetData.size() == 1 && + mapBlocksInFlight.size() == 1 && + pindexLast->pprev->IsValid(BLOCK_VALID_CHAIN)) { // In any case, we want to download using a compact block, not a regular one vGetData[0] = CInv(MSG_CMPCT_BLOCK, vGetData[0].hash); } |