Merge pull request #309 from jl777/dev

Dev
This commit is contained in:
jl777
2017-03-18 10:52:36 +02:00
committed by GitHub
2 changed files with 16 additions and 8 deletions

View File

@@ -1464,7 +1464,13 @@ bool AppInit2(boost::thread_group& threadGroup, CScheduler& scheduler)
uiInterface.InitMessage(_("Activating best chain...")); uiInterface.InitMessage(_("Activating best chain..."));
// scan for better chains in the block chain database, that are not yet connected in the active best chain // scan for better chains in the block chain database, that are not yet connected in the active best chain
CValidationState state; CValidationState state;
if (!ActivateBestChain(state)) extern int32_t KOMODO_REWIND;
if ( KOMODO_REWIND < 0 )
{
KOMODO_REWIND = 0;
fprintf(stderr,"bypass ActivateBestChain\n");
}
else if ( !ActivateBestChain(state))
strErrors << "Failed to connect best block"; strErrors << "Failed to connect best block";
std::vector<boost::filesystem::path> vImportFiles; std::vector<boost::filesystem::path> vImportFiles;

View File

@@ -2769,18 +2769,21 @@ static bool ActivateBestChainStep(CValidationState &state, CBlockIndex *pindexMo
if (!DisconnectTip(state)) if (!DisconnectTip(state))
return false; return false;
} }
if ( KOMODO_REWIND != 0 && chainActive.Tip()->nHeight >= KOMODO_REWIND ) if ( KOMODO_REWIND != 0 && chainActive.Tip()->nHeight >= KOMODO_REWIND-1 )
{ {
//static int32_t didinit; static int32_t didinit;
//if ( didinit++ == 0 ) if ( chainActive.Tip()->nHeight == KOMODO_REWIND )
if ( chainActive.Tip()->nHeight == KOMODO_REWIND+1 )
{ {
pindexOldTip = pindexMostWork = chainActive.Tip();
fprintf(stderr,"reached rewind.%d, best to do: ./komodo-cli stop\n",KOMODO_REWIND); fprintf(stderr,"reached rewind.%d, best to do: ./komodo-cli stop\n",KOMODO_REWIND);
pindexFork = chainActive.FindFork(pindexMostWork);
sleep(3); sleep(3);
return(false); didinit++;
return(true);
} }
if ( didinit == 0 )
{ {
while (chainActive.Tip()->nHeight > KOMODO_REWIND ) while (chainActive.Tip()->nHeight >= KOMODO_REWIND )
{ {
fprintf(stderr,"rewind ht.%d\n",chainActive.Tip()->nHeight); fprintf(stderr,"rewind ht.%d\n",chainActive.Tip()->nHeight);
if ( !DisconnectTip(state) ) if ( !DisconnectTip(state) )
@@ -2868,7 +2871,6 @@ bool ActivateBestChain(CValidationState &state, CBlock *pblock) {
if (!ActivateBestChainStep(state, pindexMostWork, pblock && pblock->GetHash() == pindexMostWork->GetBlockHash() ? pblock : NULL)) if (!ActivateBestChainStep(state, pindexMostWork, pblock && pblock->GetHash() == pindexMostWork->GetBlockHash() ? pblock : NULL))
return false; return false;
pindexNewTip = chainActive.Tip(); pindexNewTip = chainActive.Tip();
fInitialDownload = IsInitialBlockDownload(); fInitialDownload = IsInitialBlockDownload();
} }