diff --git a/src/masternode-sync.cpp b/src/masternode-sync.cpp index c54c07e5825fa..d894e1d23c252 100644 --- a/src/masternode-sync.cpp +++ b/src/masternode-sync.cpp @@ -239,8 +239,8 @@ void CMasternodeSync::Process() return; } - //try syncing again in an hour - if(RequestedMasternodeAssets == MASTERNODE_SYNC_FAILED && lastFailure + (60*60) < GetTime()) { + //try syncing again + if(RequestedMasternodeAssets == MASTERNODE_SYNC_FAILED && lastFailure + (1*60) < GetTime()) { Reset(); } else if (RequestedMasternodeAssets == MASTERNODE_SYNC_FAILED) { return; @@ -292,7 +292,7 @@ void CMasternodeSync::Process() if(RequestedMasternodeAssets == MASTERNODE_SYNC_LIST) { if(fDebug) LogPrintf("CMasternodeSync::Process() - lastMasternodeList %lld (GetTime() - MASTERNODE_SYNC_TIMEOUT) %lld\n", lastMasternodeList, GetTime() - MASTERNODE_SYNC_TIMEOUT); - if(lastMasternodeList > 0 && lastMasternodeList < GetTime() - MASTERNODE_SYNC_TIMEOUT && RequestedMasternodeAttempt >= MASTERNODE_SYNC_THRESHOLD){ //hasn't received a new item in the last five seconds, so we'll move to the + if(lastMasternodeList > 0 && lastMasternodeList < GetTime() - MASTERNODE_SYNC_TIMEOUT*2 && RequestedMasternodeAttempt >= MASTERNODE_SYNC_THRESHOLD){ //hasn't received a new item in the last five seconds, so we'll move to the GetNextAsset(); return; } @@ -302,7 +302,7 @@ void CMasternodeSync::Process() // timeout if(lastMasternodeList == 0 && - (RequestedMasternodeAttempt >= MASTERNODE_SYNC_THRESHOLD*3 || GetTime() - nAssetSyncStarted > MASTERNODE_SYNC_TIMEOUT*3)) { + (RequestedMasternodeAttempt >= MASTERNODE_SYNC_THRESHOLD*3 || GetTime() - nAssetSyncStarted > MASTERNODE_SYNC_TIMEOUT*5)) { if(IsSporkActive(SPORK_8_MASTERNODE_PAYMENT_ENFORCEMENT)) { LogPrintf("CMasternodeSync::Process - ERROR - Sync has failed, will retry later\n"); RequestedMasternodeAssets = MASTERNODE_SYNC_FAILED; @@ -315,13 +315,15 @@ void CMasternodeSync::Process() return; } + if(RequestedMasternodeAttempt >= MASTERNODE_SYNC_THRESHOLD*3) return; + mnodeman.DsegUpdate(pnode); RequestedMasternodeAttempt++; return; } if(RequestedMasternodeAssets == MASTERNODE_SYNC_MNW) { - if(lastMasternodeWinner > 0 && lastMasternodeWinner < GetTime() - MASTERNODE_SYNC_TIMEOUT && RequestedMasternodeAttempt >= MASTERNODE_SYNC_THRESHOLD){ //hasn't received a new item in the last five seconds, so we'll move to the + if(lastMasternodeWinner > 0 && lastMasternodeWinner < GetTime() - MASTERNODE_SYNC_TIMEOUT*2 && RequestedMasternodeAttempt >= MASTERNODE_SYNC_THRESHOLD){ //hasn't received a new item in the last five seconds, so we'll move to the GetNextAsset(); return; } @@ -331,7 +333,7 @@ void CMasternodeSync::Process() // timeout if(lastMasternodeWinner == 0 && - (RequestedMasternodeAttempt >= MASTERNODE_SYNC_THRESHOLD*3 || GetTime() - nAssetSyncStarted > MASTERNODE_SYNC_TIMEOUT*3)) { + (RequestedMasternodeAttempt >= MASTERNODE_SYNC_THRESHOLD*3 || GetTime() - nAssetSyncStarted > MASTERNODE_SYNC_TIMEOUT*5)) { if(IsSporkActive(SPORK_8_MASTERNODE_PAYMENT_ENFORCEMENT)) { LogPrintf("CMasternodeSync::Process - ERROR - Sync has failed, will retry later\n"); RequestedMasternodeAssets = MASTERNODE_SYNC_FAILED; @@ -344,6 +346,7 @@ void CMasternodeSync::Process() return; } + if(RequestedMasternodeAttempt >= MASTERNODE_SYNC_THRESHOLD*3) return; CBlockIndex* pindexPrev = chainActive.Tip(); if(pindexPrev == NULL) return; @@ -360,7 +363,7 @@ void CMasternodeSync::Process() if(RequestedMasternodeAssets == MASTERNODE_SYNC_BUDGET){ //we'll start rejecting votes if we accidentally get set as synced too soon - if(lastBudgetItem > 0 && lastBudgetItem < GetTime() - MASTERNODE_SYNC_TIMEOUT && RequestedMasternodeAttempt >= MASTERNODE_SYNC_THRESHOLD){ //hasn't received a new item in the last five seconds, so we'll move to the + if(lastBudgetItem > 0 && lastBudgetItem < GetTime() - MASTERNODE_SYNC_TIMEOUT*2 && RequestedMasternodeAttempt >= MASTERNODE_SYNC_THRESHOLD){ //hasn't received a new item in the last five seconds, so we'll move to the //LogPrintf("CMasternodeSync::Process - HasNextFinalizedBudget %d nCountFailures %d IsBudgetPropEmpty %d\n", budget.HasNextFinalizedBudget(), nCountFailures, IsBudgetPropEmpty()); //if(budget.HasNextFinalizedBudget() || nCountFailures >= 2 || IsBudgetPropEmpty()) { GetNextAsset(); @@ -379,7 +382,7 @@ void CMasternodeSync::Process() // timeout if(lastBudgetItem == 0 && - (RequestedMasternodeAttempt >= MASTERNODE_SYNC_THRESHOLD*3 || GetTime() - nAssetSyncStarted > MASTERNODE_SYNC_TIMEOUT*3)) { + (RequestedMasternodeAttempt >= MASTERNODE_SYNC_THRESHOLD*3 || GetTime() - nAssetSyncStarted > MASTERNODE_SYNC_TIMEOUT*5)) { // maybe there is no budgets at all, so just finish syncing GetNextAsset(); activeMasternode.ManageStatus(); @@ -389,6 +392,8 @@ void CMasternodeSync::Process() if(pnode->HasFulfilledRequest("busync")) continue; pnode->FulfilledRequest("busync"); + if(RequestedMasternodeAttempt >= MASTERNODE_SYNC_THRESHOLD*3) return; + uint256 n = 0; pnode->PushMessage("mnvs", n); //sync masternode votes RequestedMasternodeAttempt++; diff --git a/src/masternode-sync.h b/src/masternode-sync.h index f44dd32474144..1ea6b015d6d6f 100644 --- a/src/masternode-sync.h +++ b/src/masternode-sync.h @@ -16,7 +16,7 @@ #define MASTERNODE_SYNC_FINISHED 999 #define MASTERNODE_SYNC_TIMEOUT 5 -#define MASTERNODE_SYNC_THRESHOLD 4 +#define MASTERNODE_SYNC_THRESHOLD 2 class CMasternodeSync; extern CMasternodeSync masternodeSync;