As segwit is active on testnet, blocks will only be downloaded from NODE_WITNESS peers. Though, exactly those peers are disconnected after `BLOCK_STALLING_TIMEOUT = 2` seconds. I am running master (6e6ab2c)

This behavior is consistent across restarts. Sample [debug.log](http://pastebin.ubuntu.com/23058327/) and [getchaintips](http://pastebin.ubuntu.com/23058325/).

It is possible that I shot my own foot at some point, but it seemed smelly enough to create an issue.

if (nodestate->fProvidesHeaderAndIDs && vGetData.size() == 1 && mapBlocksInFlight.size() == 1 && pindexLast->pprev->IsValid(BLOCK_VALID_CHAIN) && !(nLocalServices & NODE_WITNESS)) {
                        
                        
                        MaybeSetPeerAsAnnouncingHeaderAndIDs(nodestate, pfrom);
                        
                        vGetData[0] = CInv(MSG_CMPCT_BLOCK, vGetData[0].hash);
                    }
                    pfrom->PushMessage(NetMsgType::GETDATA, vGetData);
                }
            }
        }
        CheckBlockIndex(chainparams.GetConsensus());
        }
        NotifyHeaderTip();
    }
    else if (strCommand == NetMsgType::BLOCK && !fImporting && !fReindex) 
    {
        CBlock block;
        vRecv >> block;
        LogPrint("net", "received block %s peer=%d\n", block.GetHash().ToString(), pfrom->id);
        CValidationState state;
        
        
        
        
        bool forceProcessing = pfrom->fWhitelisted && !IsInitialBlockDownload();
        ProcessNewBlock(state, chainparams, pfrom, &block, forceProcessing, NULL);
        int nDoS;
        if (state.IsInvalid(nDoS)) {
            assert (state.GetRejectCode() < REJECT_INTERNAL);