Fix nDelayGetHeadersTime (int64_t max == never delay) (#1916)
* Fix nDelayGetHeadersTime (int64_t max == never delay) * Rewrite conditions in a more natural way i.e. (now - last_best > threshold)
This commit is contained in:
parent
f35b5979a7
commit
ed712eb819
@ -579,7 +579,7 @@ public:
|
|||||||
pchMessageStart[1] = 0xc1;
|
pchMessageStart[1] = 0xc1;
|
||||||
pchMessageStart[2] = 0xb7;
|
pchMessageStart[2] = 0xb7;
|
||||||
pchMessageStart[3] = 0xdc;
|
pchMessageStart[3] = 0xdc;
|
||||||
nDelayGetHeadersTime = 0; // never delay GETHEADERS in regtests
|
nDelayGetHeadersTime = std::numeric_limits<int64_t>::max(); // never delay GETHEADERS in regtests
|
||||||
nDefaultPort = 19994;
|
nDefaultPort = 19994;
|
||||||
nPruneAfterHeight = 1000;
|
nPruneAfterHeight = 1000;
|
||||||
|
|
||||||
|
@ -1481,7 +1481,7 @@ bool static ProcessMessage(CNode* pfrom, const std::string& strCommand, CDataStr
|
|||||||
// GETHEADERS
|
// GETHEADERS
|
||||||
bool fDevNetGenesis = !chainparams.GetConsensus().hashDevnetGenesisBlock.IsNull() && pindexBestHeader->GetBlockHash() == chainparams.GetConsensus().hashDevnetGenesisBlock;
|
bool fDevNetGenesis = !chainparams.GetConsensus().hashDevnetGenesisBlock.IsNull() && pindexBestHeader->GetBlockHash() == chainparams.GetConsensus().hashDevnetGenesisBlock;
|
||||||
|
|
||||||
if (!fDevNetGenesis && chainparams.DelayGetHeadersTime() != 0 && pindexBestHeader->GetBlockTime() < GetAdjustedTime() - chainparams.DelayGetHeadersTime()) {
|
if (!fDevNetGenesis && (GetAdjustedTime() - pindexBestHeader->GetBlockTime() > chainparams.DelayGetHeadersTime())) {
|
||||||
// We are pretty far from being completely synced at the moment. If we would initiate a new
|
// We are pretty far from being completely synced at the moment. If we would initiate a new
|
||||||
// chain of GETHEADERS/HEADERS now, we may end up downnloading the full chain from multiple
|
// chain of GETHEADERS/HEADERS now, we may end up downnloading the full chain from multiple
|
||||||
// peers at the same time, slowing down the initial sync. At the same time, we don't know
|
// peers at the same time, slowing down the initial sync. At the same time, we don't know
|
||||||
@ -1964,7 +1964,7 @@ bool static ProcessMessage(CNode* pfrom, const std::string& strCommand, CDataStr
|
|||||||
LogPrint("net", "more getheaders (%d) to end to peer=%d (startheight:%d)\n", pindexLast->nHeight, pfrom->id, pfrom->nStartingHeight);
|
LogPrint("net", "more getheaders (%d) to end to peer=%d (startheight:%d)\n", pindexLast->nHeight, pfrom->id, pfrom->nStartingHeight);
|
||||||
connman.PushMessage(pfrom, msgMaker.Make(NetMsgType::GETHEADERS, chainActive.GetLocator(pindexLast), uint256()));
|
connman.PushMessage(pfrom, msgMaker.Make(NetMsgType::GETHEADERS, chainActive.GetLocator(pindexLast), uint256()));
|
||||||
} else {
|
} else {
|
||||||
if (chainparams.DelayGetHeadersTime() != 0 && pindexBestHeader->GetBlockTime() < GetAdjustedTime() - chainparams.DelayGetHeadersTime()) {
|
if (GetAdjustedTime() - pindexBestHeader->GetBlockTime() > chainparams.DelayGetHeadersTime()) {
|
||||||
// peer has sent us a HEADERS message below maximum size and we are still quite far from being fully
|
// peer has sent us a HEADERS message below maximum size and we are still quite far from being fully
|
||||||
// synced, this means we probably got a bad peer for initial sync and need to continue with another one.
|
// synced, this means we probably got a bad peer for initial sync and need to continue with another one.
|
||||||
// By disconnecting we force to start a new iteration of initial headers sync in SendMessages
|
// By disconnecting we force to start a new iteration of initial headers sync in SendMessages
|
||||||
@ -2600,7 +2600,7 @@ bool SendMessages(CNode* pto, CConnman& connman, const std::atomic<bool>& interr
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (chainParams.DelayGetHeadersTime() != 0 && pindexBestHeader->GetBlockTime() >= GetAdjustedTime() - chainParams.DelayGetHeadersTime()) {
|
if (GetAdjustedTime() - pindexBestHeader->GetBlockTime() <= chainParams.DelayGetHeadersTime()) {
|
||||||
// Headers chain has catched up enough so we can send out GETHEADER messages which were initially meant to
|
// Headers chain has catched up enough so we can send out GETHEADER messages which were initially meant to
|
||||||
// be sent directly after INV was received
|
// be sent directly after INV was received
|
||||||
LOCK(pto->cs_inventory);
|
LOCK(pto->cs_inventory);
|
||||||
|
Loading…
Reference in New Issue
Block a user