doc: add comment explaining initial header request
Add a comment that explains why the initial "getheader" requests are made starting from the block preceding the currently best one. Thanks to sdaftuar for the explanation!
This commit is contained in:
parent
a1d623da3e
commit
53b86d0de5
1 changed files with 10 additions and 1 deletions
11
src/main.cpp
11
src/main.cpp
|
@ -4955,7 +4955,16 @@ bool SendMessages(CNode* pto, bool fSendTrickle)
|
||||||
if ((nSyncStarted == 0 && fFetch) || pindexBestHeader->GetBlockTime() > GetAdjustedTime() - 24 * 60 * 60) {
|
if ((nSyncStarted == 0 && fFetch) || pindexBestHeader->GetBlockTime() > GetAdjustedTime() - 24 * 60 * 60) {
|
||||||
state.fSyncStarted = true;
|
state.fSyncStarted = true;
|
||||||
nSyncStarted++;
|
nSyncStarted++;
|
||||||
CBlockIndex *pindexStart = pindexBestHeader->pprev ? pindexBestHeader->pprev : pindexBestHeader;
|
const CBlockIndex *pindexStart = pindexBestHeader;
|
||||||
|
/* If possible, start at the block preceding the currently
|
||||||
|
best known header. This ensures that we always get a
|
||||||
|
non-empty list of headers back as long as the peer
|
||||||
|
is up-to-date. With a non-empty response, we can initialise
|
||||||
|
the peer's known best block. This wouldn't be possible
|
||||||
|
if we requested starting at pindexBestHeader and
|
||||||
|
got back an empty response. */
|
||||||
|
if (pindexStart->pprev)
|
||||||
|
pindexStart = pindexStart->pprev;
|
||||||
LogPrint("net", "initial getheaders (%d) to peer=%d (startheight:%d)\n", pindexStart->nHeight, pto->id, pto->nStartingHeight);
|
LogPrint("net", "initial getheaders (%d) to peer=%d (startheight:%d)\n", pindexStart->nHeight, pto->id, pto->nStartingHeight);
|
||||||
pto->PushMessage("getheaders", chainActive.GetLocator(pindexStart), uint256());
|
pto->PushMessage("getheaders", chainActive.GetLocator(pindexStart), uint256());
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue