@@ -5364,28 +5364,12 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv,
53645364 if (inv.type == MSG_BLOCK) {
53655365 UpdateBlockAvailability (pfrom->GetId (), inv.hash );
53665366 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.
53755372 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- }
53895373 LogPrint (" net" , " getheaders (%d) %s to peer=%d\n " , pindexBestHeader->nHeight , inv.hash .ToString (), pfrom->id );
53905374 }
53915375 }
0 commit comments