mirror of
https://github.com/ElementsProject/elements.git
synced 2026-08-15 12:51:00 +02:00
Merge 5f65afff9c into merged_master (Bitcoin PR bitcoin/bitcoin#24178)
This commit is contained in:
commit
1aff5fa9e9
2 changed files with 37 additions and 2 deletions
|
|
@ -3351,9 +3351,23 @@ void PeerManagerImpl::ProcessMessage(CNode& pfrom, const std::string& msg_type,
|
|||
return;
|
||||
}
|
||||
|
||||
if (fImporting || fReindex) {
|
||||
LogPrint(BCLog::NET, "Ignoring getheaders from peer=%d while importing/reindexing\n", pfrom.GetId());
|
||||
return;
|
||||
}
|
||||
|
||||
LOCK(cs_main);
|
||||
if (m_chainman.ActiveChainstate().IsInitialBlockDownload() && !pfrom.HasPermission(NetPermissionFlags::Download)) {
|
||||
LogPrint(BCLog::NET, "Ignoring getheaders from peer=%d because node is in initial block download\n", pfrom.GetId());
|
||||
|
||||
// Note that if we were to be on a chain that forks from the checkpointed
|
||||
// chain, then serving those headers to a peer that has seen the
|
||||
// checkpointed chain would cause that peer to disconnect us. Requiring
|
||||
// that our chainwork exceed nMinimumChainWork is a protection against
|
||||
// being fed a bogus chain when we started up for the first time and
|
||||
// getting partitioned off the honest network for serving that chain to
|
||||
// others.
|
||||
if (m_chainman.ActiveTip() == nullptr ||
|
||||
(m_chainman.ActiveTip()->nChainWork < nMinimumChainWork && !pfrom.HasPermission(NetPermissionFlags::Download))) {
|
||||
LogPrint(BCLog::NET, "Ignoring getheaders from peer=%d because active chain has too little work\n", pfrom.GetId());
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue