mirror of
https://github.com/ElementsProject/elements.git
synced 2026-08-14 12:43:40 +02:00
Fix underflow when blocks are ahead of headers
This commit is contained in:
parent
718ac5bd6b
commit
e7fea1d50b
3 changed files with 4 additions and 4 deletions
|
|
@ -2015,7 +2015,7 @@ void PeerManagerImpl::ProcessHeadersMessage(CNode& pfrom, const Peer& peer,
|
|||
// the received headers. We can still get ahead by up to a single maximum-sized
|
||||
// headers message here, but never further, so that's fine.
|
||||
if (pindexBestHeader) {
|
||||
uint64_t headers_ahead = pindexBestHeader->nHeight - m_chainman.ActiveHeight();
|
||||
int64_t headers_ahead = pindexBestHeader->nHeight - m_chainman.ActiveHeight();
|
||||
bool too_far_ahead = fTrimHeaders && (headers_ahead >= nHeaderDownloadBuffer);
|
||||
if (too_far_ahead) {
|
||||
LOCK(cs_main);
|
||||
|
|
@ -4532,7 +4532,7 @@ bool PeerManagerImpl::SendMessages(CNode* pto)
|
|||
if (pindexBestHeader == nullptr)
|
||||
pindexBestHeader = m_chainman.ActiveChain().Tip();
|
||||
bool fFetch = state.fPreferredDownload || (nPreferredDownload == 0 && !pto->fClient && !pto->IsAddrFetchConn()); // Download if this is a nice peer, or we have no nice peers and this one might do.
|
||||
uint64_t headers_ahead = pindexBestHeader->nHeight - m_chainman.ActiveHeight();
|
||||
int64_t headers_ahead = pindexBestHeader->nHeight - m_chainman.ActiveHeight();
|
||||
// ELEMENTS: Only download if our headers aren't "too far ahead" of our blocks.
|
||||
bool got_enough_headers = fTrimHeaders && (headers_ahead >= nHeaderDownloadBuffer);
|
||||
if (!state.fSyncStarted && !pto->fClient && !fImporting && !fReindex && !got_enough_headers) {
|
||||
|
|
|
|||
|
|
@ -27,7 +27,7 @@ bool fPruneMode = false;
|
|||
uint64_t nPruneTarget = 0;
|
||||
bool fTrimHeaders = false;
|
||||
uint64_t nMustKeepFullHeaders = std::numeric_limits<uint64_t>::max();
|
||||
uint64_t nHeaderDownloadBuffer = std::numeric_limits<uint64_t>::max();
|
||||
int64_t nHeaderDownloadBuffer = std::numeric_limits<int64_t>::max();
|
||||
|
||||
// TODO make namespace {
|
||||
RecursiveMutex cs_LastBlockFile;
|
||||
|
|
|
|||
|
|
@ -50,7 +50,7 @@ extern bool fTrimHeaders;
|
|||
extern uint64_t nMustKeepFullHeaders;
|
||||
/** Target number of headers to download beyond the blocks we have. */
|
||||
// NOTE: this currently only operates when in header trim mode, but it's really independent of that.
|
||||
extern uint64_t nHeaderDownloadBuffer;
|
||||
extern int64_t nHeaderDownloadBuffer;
|
||||
|
||||
//! Check whether the block associated with this index entry is pruned or not.
|
||||
bool IsBlockPruned(const CBlockIndex* pblockindex);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue