More testing for header transfers

This commit is contained in:
Michael Toutonghi
2018-05-16 05:29:49 -07:00
parent 004e332290
commit c132b91a01
2 changed files with 26 additions and 9 deletions

View File

@@ -4138,7 +4138,7 @@ bool AcceptBlock(int32_t *futureblockp,CBlock& block, CValidationState& state, C
AssertLockHeld(cs_main); AssertLockHeld(cs_main);
CBlockIndex *&pindex = *ppindex; CBlockIndex *&pindex = *ppindex;
if (!AcceptBlockHeader(futureblockp,block, state, &pindex)) if (!AcceptBlockHeader(futureblockp, block, state, &pindex))
{ {
if ( *futureblockp == 0 ) if ( *futureblockp == 0 )
{ {
@@ -4342,7 +4342,7 @@ bool ProcessNewBlock(bool from_miner,int32_t height,CValidationState &state, CNo
if ( 1 ) if ( 1 )
{ {
// without the komodo_ensure call, it is quite possible to get a non-error but null pindex returned from AcceptBlockHeader. In a 2 node network, it will be a long time before that block is reprocessed. Even though restarting makes it rescan, it seems much better to keep the nodes in sync // without the komodo_ensure call, it is quite possible to get a non-error but null pindex returned from AcceptBlockHeader. In a 2 node network, it will be a long time before that block is reprocessed. Even though restarting makes it rescan, it seems much better to keep the nodes in sync
komodo_ensure(pblock,hash); komodo_ensure(pblock, hash);
} }
bool ret = AcceptBlock(&futureblock,*pblock, state, &pindex, fRequested, dbp); bool ret = AcceptBlock(&futureblock,*pblock, state, &pindex, fRequested, dbp);
if (pindex && pfrom) { if (pindex && pfrom) {

View File

@@ -830,14 +830,24 @@ void static VerusStaker(CWallet *pwallet)
waitForPeers(chainparams); waitForPeers(chainparams);
// try a nice clean peer connection to start // try a nice clean peer connection to start
waitForPeers(chainparams); waitForPeers(chainparams);
CBlockIndex* pindexPrev; CBlockIndex* pindexPrev, *pindexCur;
do { do {
pindexPrev = chainActive.Tip(); {
LOCK(cs_main);
pindexPrev = chainActive.Tip();
}
MilliSleep(5000 + rand() % 5000); MilliSleep(5000 + rand() % 5000);
} while (pindexPrev != chainActive.Tip()); {
LOCK(cs_main);
pindexCur = chainActive.Tip();
}
} while (pindexPrev != pindexCur);
sleep(5); sleep(5);
printf("Staking height %d for %s\n", chainActive.Tip()->nHeight + 1, ASSETCHAINS_SYMBOL);
{
printf("Staking height %d for %s\n", chainActive.Tip()->nHeight + 1, ASSETCHAINS_SYMBOL);
}
//fprintf(stderr,"Staking height %d for %s\n", chainActive.Tip()->nHeight + 1, ASSETCHAINS_SYMBOL); //fprintf(stderr,"Staking height %d for %s\n", chainActive.Tip()->nHeight + 1, ASSETCHAINS_SYMBOL);
miningTimer.start(); miningTimer.start();
@@ -1005,11 +1015,18 @@ void static BitcoinMiner_noeq()
// try a nice clean peer connection to start // try a nice clean peer connection to start
waitForPeers(chainparams); waitForPeers(chainparams);
CBlockIndex* pindexPrev; CBlockIndex *pindexPrev, *pindexCur;
do { do {
pindexPrev = chainActive.Tip(); {
LOCK(cs_main);
pindexPrev = chainActive.Tip();
}
MilliSleep(5000 + rand() % 5000); MilliSleep(5000 + rand() % 5000);
} while (pindexPrev != chainActive.Tip()); {
LOCK(cs_main);
pindexCur = chainActive.Tip();
}
} while (pindexPrev != pindexCur);
printf("Mining height %d\n", chainActive.Tip()->nHeight + 1); printf("Mining height %d\n", chainActive.Tip()->nHeight + 1);