#10982 started disconnecting service bits 6 and 8 until aug 1, 2018, the code to do so should be removed on or after that date.
assert(pindex);
        UpdateBlockAvailability(pfrom->GetId(), pindex->GetBlockHash());
        CNodeState *nodestate = State(pfrom->GetId());
        
        
        if (received_new_header && pindex->nChainWork > chainActive.Tip()->nChainWork) {
            nodestate->m_last_block_announcement = GetTime();
        }
        std::map<uint256, std::pair<NodeId, std::list<QueuedBlock>::iterator> >::iterator blockInFlightIt = mapBlocksInFlight.find(pindex->GetBlockHash());
        bool fAlreadyInFlight = blockInFlightIt != mapBlocksInFlight.end();
        if (pindex->nStatus & BLOCK_HAVE_DATA) 
            return true;
        if (pindex->nChainWork <= chainActive.Tip()->nChainWork || 
                pindex->nTx != 0) { 
            if (fAlreadyInFlight) {
                
                
                std::vector<CInv> vInv(1);
                vInv[0] = CInv(MSG_BLOCK | GetFetchFlags(pfrom), cmpctblock.header.GetHash());
                connman->PushMessage(pfrom, msgMaker.Make(NetMsgType::GETDATA, vInv));
            }
            return true;
        }
        
        if (!fAlreadyInFlight && !CanDirectFetch(chainparams.GetConsensus()))
            return true;
        if (IsWitnessEnabled(pindex->pprev, chainparams.GetConsensus()) && !nodestate->fSupportsDesiredCmpctVersion) {
            
            
            return true;