fix bug in initial-block-headers download

saves several gigabytes of bandwidth
thanks to Cryptoslave of Anoncoin for this fix.
This commit is contained in:
nzsquirrell
2016-06-05 20:49:01 +12:00
parent 3e9ff50cb6
commit f122abfe3d
2 changed files with 5 additions and 2 deletions
+4 -1
View File
@@ -4477,7 +4477,10 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv,
if (inv.type == MSG_BLOCK) {
UpdateBlockAvailability(pfrom->GetId(), inv.hash);
if (!fAlreadyHave && !fImporting && !fReindex && !mapBlocksInFlight.count(inv.hash)) {
if (!fAlreadyHave && !fImporting && !fReindex && IsInitialBlockDownload() && !mapBlocksInFlight.count(inv.hash)) {
// !IsInitialBlockDownload() is needed otherwise it start to download the same headers
// several time per peer and from all peers, wasting a lot of computing time and bandwidth
// First request the headers preceding the announced block. In the normal fully-synced
// case where a new block is announced that succeeds the current tip (no reorganization),
// there are no such headers.
+1 -1
View File
@@ -73,7 +73,7 @@ static const int MAX_SCRIPTCHECK_THREADS = 16;
/** -par default (number of script-checking threads, 0 = auto) */
static const int DEFAULT_SCRIPTCHECK_THREADS = 0;
/** Number of blocks that can be requested at any given time from a single peer. */
static const int MAX_BLOCKS_IN_TRANSIT_PER_PEER = 16;
static const int MAX_BLOCKS_IN_TRANSIT_PER_PEER = 32;
/** Timeout in seconds during which a peer must stall block download progress before being disconnected. */
static const unsigned int BLOCK_STALLING_TIMEOUT = 2;
/** Number of headers sent in one getheaders result. We rely on the assumption that if a peer sends