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.

LOCK(pto->cs_inventory);
            vector<CBlock> vHeaders;
            bool fRevertToInv = ((!state.fPreferHeaders &&
                                 (!state.fPreferHeaderAndIDs || pto->vBlockHashesToAnnounce.size() > 1)) ||
                                pto->vBlockHashesToAnnounce.size() > MAX_BLOCKS_TO_ANNOUNCE);
            CBlockIndex *pBestIndex = NULL; 
            ProcessBlockAvailability(pto->id); 
            if (!fRevertToInv) {
                bool fFoundStartingHeader = false;
                
                
                
                BOOST_FOREACH(const uint256 &hash, pto->vBlockHashesToAnnounce) {
                    BlockMap::iterator mi = mapBlockIndex.find(hash);
                    assert(mi != mapBlockIndex.end());
                    CBlockIndex *pindex = mi->second;
                    if (chainActive[pindex->nHeight] != pindex) {
                        
                        fRevertToInv = true;
                        break;
                    }
                    if (pBestIndex != NULL && pindex->pprev != pBestIndex) {