Skip to content

Commit d777835

Browse files
committed
[net processing] Move ProcessHeadersMessage to PeerManager
1 parent 64f6162 commit d777835

File tree

2 files changed

+14
-10
lines changed

2 files changed

+14
-10
lines changed

src/net_processing.cpp

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1856,7 +1856,7 @@ inline void static SendBlockTransactions(const CBlock& block, const BlockTransac
18561856
connman.PushMessage(&pfrom, msgMaker.Make(nSendFlags, NetMsgType::BLOCKTXN, resp));
18571857
}
18581858

1859-
static void ProcessHeadersMessage(CNode& pfrom, CConnman& connman, ChainstateManager& chainman, CTxMemPool& mempool, const std::vector<CBlockHeader>& headers, const CChainParams& chainparams, bool via_compact_block)
1859+
void PeerManager::ProcessHeadersMessage(CNode& pfrom, const std::vector<CBlockHeader>& headers, bool via_compact_block)
18601860
{
18611861
const CNetMsgMaker msgMaker(pfrom.GetSendVersion());
18621862
size_t nCount = headers.size();
@@ -1882,7 +1882,7 @@ static void ProcessHeadersMessage(CNode& pfrom, CConnman& connman, ChainstateMan
18821882
// nUnconnectingHeaders gets reset back to 0.
18831883
if (!LookupBlockIndex(headers[0].hashPrevBlock) && nCount < MAX_BLOCKS_TO_ANNOUNCE) {
18841884
nodestate->nUnconnectingHeaders++;
1885-
connman.PushMessage(&pfrom, msgMaker.Make(NetMsgType::GETHEADERS, ::ChainActive().GetLocator(pindexBestHeader), uint256()));
1885+
m_connman.PushMessage(&pfrom, msgMaker.Make(NetMsgType::GETHEADERS, ::ChainActive().GetLocator(pindexBestHeader), uint256()));
18861886
LogPrint(BCLog::NET, "received header %s: missing prev block %s, sending getheaders (%d) to end (peer=%d, nUnconnectingHeaders=%d)\n",
18871887
headers[0].GetHash().ToString(),
18881888
headers[0].hashPrevBlock.ToString(),
@@ -1916,7 +1916,7 @@ static void ProcessHeadersMessage(CNode& pfrom, CConnman& connman, ChainstateMan
19161916
}
19171917

19181918
BlockValidationState state;
1919-
if (!chainman.ProcessNewBlockHeaders(headers, state, chainparams, &pindexLast)) {
1919+
if (!m_chainman.ProcessNewBlockHeaders(headers, state, m_chainparams, &pindexLast)) {
19201920
if (state.IsInvalid()) {
19211921
MaybePunishNodeForBlock(pfrom.GetId(), state, via_compact_block, "invalid header received");
19221922
return;
@@ -1947,10 +1947,10 @@ static void ProcessHeadersMessage(CNode& pfrom, CConnman& connman, ChainstateMan
19471947
// TODO: optimize: if pindexLast is an ancestor of ::ChainActive().Tip or pindexBestHeader, continue
19481948
// from there instead.
19491949
LogPrint(BCLog::NET, "more getheaders (%d) to end to peer=%d (startheight:%d)\n", pindexLast->nHeight, pfrom.GetId(), pfrom.nStartingHeight);
1950-
connman.PushMessage(&pfrom, msgMaker.Make(NetMsgType::GETHEADERS, ::ChainActive().GetLocator(pindexLast), uint256()));
1950+
m_connman.PushMessage(&pfrom, msgMaker.Make(NetMsgType::GETHEADERS, ::ChainActive().GetLocator(pindexLast), uint256()));
19511951
}
19521952

1953-
bool fCanDirectFetch = CanDirectFetch(chainparams.GetConsensus());
1953+
bool fCanDirectFetch = CanDirectFetch(m_chainparams.GetConsensus());
19541954
// If this set of headers is valid and ends in a block with at least as
19551955
// much work as our tip, download as much as possible.
19561956
if (fCanDirectFetch && pindexLast->IsValid(BLOCK_VALID_TREE) && ::ChainActive().Tip()->nChainWork <= pindexLast->nChainWork) {
@@ -1960,7 +1960,7 @@ static void ProcessHeadersMessage(CNode& pfrom, CConnman& connman, ChainstateMan
19601960
while (pindexWalk && !::ChainActive().Contains(pindexWalk) && vToFetch.size() <= MAX_BLOCKS_IN_TRANSIT_PER_PEER) {
19611961
if (!(pindexWalk->nStatus & BLOCK_HAVE_DATA) &&
19621962
!mapBlocksInFlight.count(pindexWalk->GetBlockHash()) &&
1963-
(!IsWitnessEnabled(pindexWalk->pprev, chainparams.GetConsensus()) || State(pfrom.GetId())->fHaveWitness)) {
1963+
(!IsWitnessEnabled(pindexWalk->pprev, m_chainparams.GetConsensus()) || State(pfrom.GetId())->fHaveWitness)) {
19641964
// We don't have this block, and it's not yet in flight.
19651965
vToFetch.push_back(pindexWalk);
19661966
}
@@ -1984,7 +1984,7 @@ static void ProcessHeadersMessage(CNode& pfrom, CConnman& connman, ChainstateMan
19841984
}
19851985
uint32_t nFetchFlags = GetFetchFlags(pfrom);
19861986
vGetData.push_back(CInv(MSG_BLOCK | nFetchFlags, pindex->GetBlockHash()));
1987-
MarkBlockAsInFlight(mempool, pfrom.GetId(), pindex->GetBlockHash(), pindex);
1987+
MarkBlockAsInFlight(m_mempool, pfrom.GetId(), pindex->GetBlockHash(), pindex);
19881988
LogPrint(BCLog::NET, "Requesting block %s from peer=%d\n",
19891989
pindex->GetBlockHash().ToString(), pfrom.GetId());
19901990
}
@@ -1997,7 +1997,7 @@ static void ProcessHeadersMessage(CNode& pfrom, CConnman& connman, ChainstateMan
19971997
// In any case, we want to download using a compact block, not a regular one
19981998
vGetData[0] = CInv(MSG_CMPCT_BLOCK, vGetData[0].hash);
19991999
}
2000-
connman.PushMessage(&pfrom, msgMaker.Make(NetMsgType::GETDATA, vGetData));
2000+
m_connman.PushMessage(&pfrom, msgMaker.Make(NetMsgType::GETDATA, vGetData));
20012001
}
20022002
}
20032003
}
@@ -3353,7 +3353,7 @@ void PeerManager::ProcessMessage(CNode& pfrom, const std::string& msg_type, CDat
33533353
// the peer if the header turns out to be for an invalid block.
33543354
// Note that if a peer tries to build on an invalid chain, that
33553355
// will be detected and the peer will be disconnected/discouraged.
3356-
return ProcessHeadersMessage(pfrom, m_connman, m_chainman, m_mempool, {cmpctblock.header}, m_chainparams, /*via_compact_block=*/true);
3356+
return ProcessHeadersMessage(pfrom, {cmpctblock.header}, /*via_compact_block=*/true);
33573357
}
33583358

33593359
if (fBlockReconstructed) {
@@ -3496,7 +3496,7 @@ void PeerManager::ProcessMessage(CNode& pfrom, const std::string& msg_type, CDat
34963496
ReadCompactSize(vRecv); // ignore tx count; assume it is 0.
34973497
}
34983498

3499-
return ProcessHeadersMessage(pfrom, m_connman, m_chainman, m_mempool, headers, m_chainparams, /*via_compact_block=*/false);
3499+
return ProcessHeadersMessage(pfrom, headers, /*via_compact_block=*/false);
35003500
}
35013501

35023502
if (msg_type == NetMsgType::BLOCK)

src/net_processing.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
#include <sync.h>
1212
#include <validationinterface.h>
1313

14+
class CBlockHeader;
1415
class CChainParams;
1516
class CTxMemPool;
1617
class ChainstateManager;
@@ -90,6 +91,9 @@ class PeerManager final : public CValidationInterface, public NetEventsInterface
9091
*/
9192
bool MaybeDiscourageAndDisconnect(CNode& pnode);
9293

94+
/** Process a single headers message from a peer. */
95+
void ProcessHeadersMessage(CNode& pfrom, const std::vector<CBlockHeader>& headers, bool via_compact_block);
96+
9397
const CChainParams& m_chainparams;
9498
CConnman& m_connman;
9599
/** Pointer to this node's banman. May be nullptr - check existence before dereferencing. */

0 commit comments

Comments
 (0)