@@ -283,143 +283,144 @@ void CMasternodeSync::Process()
283283
284284 std::vector<CNode*> vNodesCopy = g_connman->CopyNodeVector ();
285285 for (CNode* pnode : vNodesCopy) {
286- if (isRegTestNet) {
287- if (RequestedMasternodeAttempt <= 2 ) {
288- pnode->PushMessage (NetMsgType::GETSPORKS); // get current network sporks
289- } else if (RequestedMasternodeAttempt < 4 ) {
290- mnodeman.DsegUpdate (pnode);
291- } else if (RequestedMasternodeAttempt < 6 ) {
292- int nMnCount = mnodeman.CountEnabled ();
293- pnode->PushMessage (NetMsgType::GETMNWINNERS, nMnCount); // sync payees
294- uint256 n;
295- pnode->PushMessage (NetMsgType::BUDGETVOTESYNC, n); // sync masternode votes
296- } else {
297- RequestedMasternodeAssets = MASTERNODE_SYNC_FINISHED;
298- }
299- RequestedMasternodeAttempt++;
286+ if (!SyncWithNode (pnode, isRegTestNet)) {
300287 g_connman->ReleaseNodeVector (vNodesCopy);
301288 return ;
302289 }
290+ }
291+ g_connman->ReleaseNodeVector (vNodesCopy);
292+ }
303293
304- // set to synced
305- if (RequestedMasternodeAssets == MASTERNODE_SYNC_SPORKS) {
306- if (pnode->HasFulfilledRequest (" getspork" )) continue ;
307- pnode->FulfilledRequest (" getspork" );
308-
294+ bool CMasternodeSync::SyncWithNode (CNode* pnode, bool isRegTestNet)
295+ {
296+ if (isRegTestNet) {
297+ if (RequestedMasternodeAttempt <= 2 ) {
309298 pnode->PushMessage (NetMsgType::GETSPORKS); // get current network sporks
310- if (RequestedMasternodeAttempt >= 2 ) GetNextAsset ();
311- RequestedMasternodeAttempt++;
312- g_connman->ReleaseNodeVector (vNodesCopy);
313- return ;
299+ } else if (RequestedMasternodeAttempt < 4 ) {
300+ mnodeman.DsegUpdate (pnode);
301+ } else if (RequestedMasternodeAttempt < 6 ) {
302+ int nMnCount = mnodeman.CountEnabled ();
303+ pnode->PushMessage (NetMsgType::GETMNWINNERS, nMnCount); // sync payees
304+ uint256 n;
305+ pnode->PushMessage (NetMsgType::BUDGETVOTESYNC, n); // sync masternode votes
306+ } else {
307+ RequestedMasternodeAssets = MASTERNODE_SYNC_FINISHED;
314308 }
309+ RequestedMasternodeAttempt++;
310+ return false ;
311+ }
315312
316- if (pnode->nVersion >= masternodePayments.GetMinMasternodePaymentsProto ()) {
317- if (RequestedMasternodeAssets == MASTERNODE_SYNC_LIST) {
318- LogPrint (BCLog::MASTERNODE, " CMasternodeSync::Process() - lastMasternodeList %lld (GetTime() - MASTERNODE_SYNC_TIMEOUT) %lld\n " , lastMasternodeList, GetTime () - MASTERNODE_SYNC_TIMEOUT);
319- 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
320- GetNextAsset ();
321- g_connman->ReleaseNodeVector (vNodesCopy);
322- return ;
323- }
324-
325- if (pnode->HasFulfilledRequest (" mnsync" )) continue ;
326- pnode->FulfilledRequest (" mnsync" );
327-
328- // timeout
329- if (lastMasternodeList == 0 &&
330- (RequestedMasternodeAttempt >= MASTERNODE_SYNC_THRESHOLD * 3 || GetTime () - nAssetSyncStarted > MASTERNODE_SYNC_TIMEOUT * 5 )) {
331- if (sporkManager.IsSporkActive (SPORK_8_MASTERNODE_PAYMENT_ENFORCEMENT)) {
332- LogPrintf (" CMasternodeSync::Process - ERROR - Sync has failed on %s, will retry later\n " , " MASTERNODE_SYNC_LIST" );
333- RequestedMasternodeAssets = MASTERNODE_SYNC_FAILED;
334- RequestedMasternodeAttempt = 0 ;
335- lastFailure = GetTime ();
336- nCountFailures++;
337- } else {
338- GetNextAsset ();
339- }
340- g_connman->ReleaseNodeVector (vNodesCopy);
341- return ;
342- }
313+ // set to synced
314+ if (RequestedMasternodeAssets == MASTERNODE_SYNC_SPORKS) {
315+ if (pnode->HasFulfilledRequest (" getspork" )) return true ;
316+ pnode->FulfilledRequest (" getspork" );
343317
344- if (RequestedMasternodeAttempt >= MASTERNODE_SYNC_THRESHOLD * 3 ) return ;
318+ pnode->PushMessage (NetMsgType::GETSPORKS); // get current network sporks
319+ if (RequestedMasternodeAttempt >= 2 ) GetNextAsset ();
320+ RequestedMasternodeAttempt++;
321+ return false ;
322+ }
345323
346- mnodeman.DsegUpdate (pnode);
347- RequestedMasternodeAttempt++;
348- g_connman->ReleaseNodeVector (vNodesCopy);
349- return ;
324+ if (pnode->nVersion >= masternodePayments.GetMinMasternodePaymentsProto ()) {
325+ if (RequestedMasternodeAssets == MASTERNODE_SYNC_LIST) {
326+ LogPrint (BCLog::MASTERNODE, " CMasternodeSync::Process() - lastMasternodeList %lld (GetTime() - MASTERNODE_SYNC_TIMEOUT) %lld\n " , lastMasternodeList, GetTime () - MASTERNODE_SYNC_TIMEOUT);
327+ 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
328+ GetNextAsset ();
329+ return false ;
350330 }
351331
352- if (RequestedMasternodeAssets == MASTERNODE_SYNC_MNW) {
353- 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
332+ if (pnode->HasFulfilledRequest (" mnsync" )) return true ;
333+ pnode->FulfilledRequest (" mnsync" );
334+
335+ // timeout
336+ if (lastMasternodeList == 0 &&
337+ (RequestedMasternodeAttempt >= MASTERNODE_SYNC_THRESHOLD * 3 || GetTime () - nAssetSyncStarted > MASTERNODE_SYNC_TIMEOUT * 5 )) {
338+ if (sporkManager.IsSporkActive (SPORK_8_MASTERNODE_PAYMENT_ENFORCEMENT)) {
339+ LogPrintf (" CMasternodeSync::Process - ERROR - Sync has failed on %s, will retry later\n " , " MASTERNODE_SYNC_LIST" );
340+ RequestedMasternodeAssets = MASTERNODE_SYNC_FAILED;
341+ RequestedMasternodeAttempt = 0 ;
342+ lastFailure = GetTime ();
343+ nCountFailures++;
344+ } else {
354345 GetNextAsset ();
355- g_connman->ReleaseNodeVector (vNodesCopy);
356- return ;
357346 }
347+ return false ;
348+ }
358349
359- if (pnode->HasFulfilledRequest (" mnwsync" )) continue ;
360- pnode->FulfilledRequest (" mnwsync" );
361-
362- // timeout
363- if (lastMasternodeWinner == 0 &&
364- (RequestedMasternodeAttempt >= MASTERNODE_SYNC_THRESHOLD * 3 || GetTime () - nAssetSyncStarted > MASTERNODE_SYNC_TIMEOUT * 5 )) {
365- if (sporkManager.IsSporkActive (SPORK_8_MASTERNODE_PAYMENT_ENFORCEMENT)) {
366- LogPrintf (" CMasternodeSync::Process - ERROR - Sync has failed on %s, will retry later\n " , " MASTERNODE_SYNC_MNW" );
367- RequestedMasternodeAssets = MASTERNODE_SYNC_FAILED;
368- RequestedMasternodeAttempt = 0 ;
369- lastFailure = GetTime ();
370- nCountFailures++;
371- } else {
372- GetNextAsset ();
373- }
374- g_connman->ReleaseNodeVector (vNodesCopy);
375- return ;
376- }
350+ if (RequestedMasternodeAttempt >= MASTERNODE_SYNC_THRESHOLD * 3 ) return false ;
377351
378- if (RequestedMasternodeAttempt >= MASTERNODE_SYNC_THRESHOLD * 3 ) return ;
352+ mnodeman.DsegUpdate (pnode);
353+ RequestedMasternodeAttempt++;
354+ return false ;
355+ }
379356
380- int nMnCount = mnodeman.CountEnabled ();
381- pnode->PushMessage (NetMsgType::GETMNWINNERS, nMnCount); // sync payees
382- RequestedMasternodeAttempt++;
383- g_connman->ReleaseNodeVector (vNodesCopy);
384- return ;
357+ if (RequestedMasternodeAssets == MASTERNODE_SYNC_MNW) {
358+ 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
359+ GetNextAsset ();
360+ return false ;
385361 }
386- }
387362
388- if (pnode->nVersion >= ActiveProtocol ()) {
389- if (RequestedMasternodeAssets == MASTERNODE_SYNC_BUDGET) {
390- // We'll start rejecting votes if we accidentally get set as synced too soon
391- if (lastBudgetItem > 0 && lastBudgetItem < GetTime () - MASTERNODE_SYNC_TIMEOUT * 2 && RequestedMasternodeAttempt >= MASTERNODE_SYNC_THRESHOLD) {
392- // Hasn't received a new item in the last five seconds, so we'll move to the
363+ if (pnode->HasFulfilledRequest (" mnwsync" )) return true ;
364+ pnode->FulfilledRequest (" mnwsync" );
365+
366+ // timeout
367+ if (lastMasternodeWinner == 0 &&
368+ (RequestedMasternodeAttempt >= MASTERNODE_SYNC_THRESHOLD * 3 || GetTime () - nAssetSyncStarted > MASTERNODE_SYNC_TIMEOUT * 5 )) {
369+ if (sporkManager.IsSporkActive (SPORK_8_MASTERNODE_PAYMENT_ENFORCEMENT)) {
370+ LogPrintf (" CMasternodeSync::Process - ERROR - Sync has failed on %s, will retry later\n " , " MASTERNODE_SYNC_MNW" );
371+ RequestedMasternodeAssets = MASTERNODE_SYNC_FAILED;
372+ RequestedMasternodeAttempt = 0 ;
373+ lastFailure = GetTime ();
374+ nCountFailures++;
375+ } else {
393376 GetNextAsset ();
394-
395- // Try to activate our masternode if possible
396- activeMasternode.ManageStatus ();
397- g_connman->ReleaseNodeVector (vNodesCopy);
398- return ;
399377 }
378+ return false ;
379+ }
400380
401- // timeout
402- if (lastBudgetItem == 0 &&
403- (RequestedMasternodeAttempt >= MASTERNODE_SYNC_THRESHOLD * 3 || GetTime () - nAssetSyncStarted > MASTERNODE_SYNC_TIMEOUT * 5 )) {
404- // maybe there is no budgets at all, so just finish syncing
405- GetNextAsset ();
406- activeMasternode.ManageStatus ();
407- g_connman->ReleaseNodeVector (vNodesCopy);
408- return ;
409- }
381+ if (RequestedMasternodeAttempt >= MASTERNODE_SYNC_THRESHOLD * 3 ) return false ;
382+
383+ int nMnCount = mnodeman.CountEnabled ();
384+ pnode->PushMessage (NetMsgType::GETMNWINNERS, nMnCount); // sync payees
385+ RequestedMasternodeAttempt++;
386+ return false ;
387+ }
388+ }
410389
411- if (pnode->HasFulfilledRequest (" busync" )) continue ;
412- pnode->FulfilledRequest (" busync" );
390+ if (pnode->nVersion >= ActiveProtocol ()) {
391+ if (RequestedMasternodeAssets == MASTERNODE_SYNC_BUDGET) {
392+ // We'll start rejecting votes if we accidentally get set as synced too soon
393+ if (lastBudgetItem > 0 && lastBudgetItem < GetTime () - MASTERNODE_SYNC_TIMEOUT * 2 && RequestedMasternodeAttempt >= MASTERNODE_SYNC_THRESHOLD) {
394+ // Hasn't received a new item in the last five seconds, so we'll move to the
395+ GetNextAsset ();
413396
414- if (RequestedMasternodeAttempt >= MASTERNODE_SYNC_THRESHOLD * 3 ) return ;
397+ // Try to activate our masternode if possible
398+ activeMasternode.ManageStatus ();
399+ return false ;
400+ }
415401
416- uint256 n;
417- pnode->PushMessage (NetMsgType::BUDGETVOTESYNC, n); // sync masternode votes
418- RequestedMasternodeAttempt++;
419- g_connman->ReleaseNodeVector (vNodesCopy);
420- return ;
402+ // timeout
403+ if (lastBudgetItem == 0 &&
404+ (RequestedMasternodeAttempt >= MASTERNODE_SYNC_THRESHOLD * 3 || GetTime () - nAssetSyncStarted > MASTERNODE_SYNC_TIMEOUT * 5 )) {
405+ // maybe there is no budgets at all, so just finish syncing
406+ GetNextAsset ();
407+ activeMasternode.ManageStatus ();
408+ return false ;
421409 }
410+
411+ if (pnode->HasFulfilledRequest (" busync" )) return true ;
412+ pnode->FulfilledRequest (" busync" );
413+
414+ if (RequestedMasternodeAttempt >= MASTERNODE_SYNC_THRESHOLD * 3 ) return false ;
415+
416+ uint256 n;
417+ pnode->PushMessage (NetMsgType::BUDGETVOTESYNC, n); // sync masternode votes
418+ RequestedMasternodeAttempt++;
419+ return false ;
422420 }
423421 }
424- g_connman->ReleaseNodeVector (vNodesCopy);
422+
423+ return true ;
425424}
425+
426+
0 commit comments