@@ -5364,28 +5364,12 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv,
5364
5364
if (inv.type == MSG_BLOCK) {
5365
5365
UpdateBlockAvailability (pfrom->GetId (), inv.hash );
5366
5366
if (!fAlreadyHave && !fImporting && !fReindex && !mapBlocksInFlight.count (inv.hash )) {
5367
- // First request the headers preceding the announced block. In the normal fully-synced
5368
- // case where a new block is announced that succeeds the current tip (no reorganization),
5369
- // there are no such headers.
5370
- // Secondly, and only when we are close to being synced, we request the announced block directly,
5371
- // to avoid an extra round-trip. Note that we must *first* ask for the headers, so by the
5372
- // time the block arrives, the header chain leading up to it is already validated. Not
5373
- // doing this will result in the received block being rejected as an orphan in case it is
5374
- // not a direct successor.
5367
+ // We used to request the full block here, but since headers-announcements are now the
5368
+ // primary method of announcement on the network, and since, in the case that a node
5369
+ // fell back to inv we probably have a reorg which we should get the headers for first,
5370
+ // we now only provide a getheaders response here. When we receive the headers, we will
5371
+ // then ask for the blocks we need.
5375
5372
connman.PushMessage (pfrom, NetMsgType::GETHEADERS, chainActive.GetLocator (pindexBestHeader), inv.hash );
5376
- CNodeState *nodestate = State (pfrom->GetId ());
5377
- if (CanDirectFetch (chainparams.GetConsensus ()) &&
5378
- nodestate->nBlocksInFlight < MAX_BLOCKS_IN_TRANSIT_PER_PEER &&
5379
- (!IsWitnessEnabled (chainActive.Tip (), chainparams.GetConsensus ()) || State (pfrom->GetId ())->fHaveWitness )) {
5380
- inv.type |= nFetchFlags;
5381
- if (nodestate->fSupportsDesiredCmpctVersion )
5382
- vToFetch.push_back (CInv (MSG_CMPCT_BLOCK, inv.hash ));
5383
- else
5384
- vToFetch.push_back (inv);
5385
- // Mark block as in flight already, even though the actual "getdata" message only goes out
5386
- // later (within the same cs_main lock, though).
5387
- MarkBlockAsInFlight (pfrom->GetId (), inv.hash , chainparams.GetConsensus ());
5388
- }
5389
5373
LogPrint (" net" , " getheaders (%d) %s to peer=%d\n " , pindexBestHeader->nHeight , inv.hash .ToString (), pfrom->id );
5390
5374
}
5391
5375
}
0 commit comments