
[debug.log.txt](https://github.com/bitcoin/bitcoin/files/592002/debug.log.txt)

My node is being swamped with cmpctblocks from nodes, when as far as I understood it, only 3 nodes at a time were supposed to be announcing via cmpctblocks. Not only this, but many of the cmpctblocks arrive quite a while after I have received the block from other nodes, so surely my node should be requesting the announcement via cmpctblocks stops, or disconnecting the nodes that continue to announce via cmpctblocks after they've been requested not to.

As a bolt-on question: why is the contents of every cmpctblock received different?
CValidationState state;
    fCheckForPruning = true;
    FlushStateToDisk(state, FLUSH_STATE_NONE);
}
void static UpdateTip(CBlockIndex *pindexNew, const CChainParams& chainParams) {
    chainActive.SetTip(pindexNew);
    
    mempool.AddTransactionsUpdated(1);
    cvBlockChange.notify_all();
    static bool fWarned = false;
    std::vector<std::string> warningMessages;
    if (!IsInitialBlockDownload())
    {
        int nUpgraded = 0;
        const CBlockIndex* pindex = chainActive.Tip();
        for (int bit = 0; bit < VERSIONBITS_NUM_BITS; bit++) {
            WarningBitsConditionChecker checker(bit);
            ThresholdState state = checker.GetStateFor(pindex, chainParams.GetConsensus(), warningcache[bit]);
            if (state == THRESHOLD_ACTIVE || state == THRESHOLD_LOCKED_IN) {
                if (state == THRESHOLD_ACTIVE) {
                    strMiscWarning = strprintf(_("Warning: unknown new rules activated (versionbit %i)"), bit);
                    if (!fWarned) {
                        AlertNotify(strMiscWarning);
                        fWarned = true;
                    }
                } else {
                    warningMessages.push_back(strprintf("unknown new rules are about to activate (versionbit %i)", bit));
                }
            }
        }