mirror of
https://github.com/dashpay/dash.git
synced 2024-12-27 04:52:59 +01:00
Merge pull request #492 from UdjinM6/v0.12.0.x_mncheck
V0.12.0.x set a cooldown for MN check
This commit is contained in:
commit
2f479e45db
@ -72,6 +72,7 @@ CMasternode::CMasternode()
|
|||||||
nLastDsq = 0;
|
nLastDsq = 0;
|
||||||
nScanningErrorCount = 0;
|
nScanningErrorCount = 0;
|
||||||
nLastScanningErrorBlockHeight = 0;
|
nLastScanningErrorBlockHeight = 0;
|
||||||
|
lastTimeChecked = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
CMasternode::CMasternode(const CMasternode& other)
|
CMasternode::CMasternode(const CMasternode& other)
|
||||||
@ -93,6 +94,7 @@ CMasternode::CMasternode(const CMasternode& other)
|
|||||||
nLastDsq = other.nLastDsq;
|
nLastDsq = other.nLastDsq;
|
||||||
nScanningErrorCount = other.nScanningErrorCount;
|
nScanningErrorCount = other.nScanningErrorCount;
|
||||||
nLastScanningErrorBlockHeight = other.nLastScanningErrorBlockHeight;
|
nLastScanningErrorBlockHeight = other.nLastScanningErrorBlockHeight;
|
||||||
|
lastTimeChecked = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
CMasternode::CMasternode(const CMasternodeBroadcast& mnb)
|
CMasternode::CMasternode(const CMasternodeBroadcast& mnb)
|
||||||
@ -114,6 +116,7 @@ CMasternode::CMasternode(const CMasternodeBroadcast& mnb)
|
|||||||
nLastDsq = 0;
|
nLastDsq = 0;
|
||||||
nScanningErrorCount = 0;
|
nScanningErrorCount = 0;
|
||||||
nLastScanningErrorBlockHeight = 0;
|
nLastScanningErrorBlockHeight = 0;
|
||||||
|
lastTimeChecked = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
@ -126,6 +129,7 @@ void CMasternode::UpdateFromNewBroadcast(CMasternodeBroadcast& mnb)
|
|||||||
sig = mnb.sig;
|
sig = mnb.sig;
|
||||||
protocolVersion = mnb.protocolVersion;
|
protocolVersion = mnb.protocolVersion;
|
||||||
addr = mnb.addr;
|
addr = mnb.addr;
|
||||||
|
lastTimeChecked = 0;
|
||||||
int nDoS = 0;
|
int nDoS = 0;
|
||||||
if(mnb.lastPing == CMasternodePing() || (mnb.lastPing != CMasternodePing() && mnb.lastPing.CheckAndUpdate(nDoS, false))) {
|
if(mnb.lastPing == CMasternodePing() || (mnb.lastPing != CMasternodePing() && mnb.lastPing.CheckAndUpdate(nDoS, false))) {
|
||||||
lastPing = mnb.lastPing;
|
lastPing = mnb.lastPing;
|
||||||
@ -164,10 +168,14 @@ uint256 CMasternode::CalculateScore(int mod, int64_t nBlockHeight)
|
|||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
void CMasternode::Check()
|
void CMasternode::Check(bool forceCheck)
|
||||||
{
|
{
|
||||||
if(ShutdownRequested()) return;
|
if(ShutdownRequested()) return;
|
||||||
|
|
||||||
|
if(!forceCheck && (GetTime() - lastTimeChecked < MASTERNODE_CHECK_SECONDS)) return;
|
||||||
|
lastTimeChecked = GetTime();
|
||||||
|
|
||||||
|
|
||||||
//once spent, stop doing the checks
|
//once spent, stop doing the checks
|
||||||
if(activeState == MASTERNODE_VIN_SPENT) return;
|
if(activeState == MASTERNODE_VIN_SPENT) return;
|
||||||
|
|
||||||
@ -605,7 +613,7 @@ bool CMasternodePing::CheckAndUpdate(int& nDos, bool fRequireEnabled)
|
|||||||
mnodeman.mapSeenMasternodeBroadcast[hash].lastPing = *this;
|
mnodeman.mapSeenMasternodeBroadcast[hash].lastPing = *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
pmn->Check();
|
pmn->Check(true);
|
||||||
if(!pmn->IsEnabled()) return false;
|
if(!pmn->IsEnabled()) return false;
|
||||||
|
|
||||||
LogPrint("masnernode", "CMasternodePing::CheckAndUpdate - Masternode ping accepted, vin: %s\n", vin.ToString());
|
LogPrint("masnernode", "CMasternodePing::CheckAndUpdate - Masternode ping accepted, vin: %s\n", vin.ToString());
|
||||||
|
@ -19,6 +19,7 @@
|
|||||||
#define MASTERNODE_PING_SECONDS (5*60)
|
#define MASTERNODE_PING_SECONDS (5*60)
|
||||||
#define MASTERNODE_EXPIRATION_SECONDS (65*60)
|
#define MASTERNODE_EXPIRATION_SECONDS (65*60)
|
||||||
#define MASTERNODE_REMOVAL_SECONDS (75*60)
|
#define MASTERNODE_REMOVAL_SECONDS (75*60)
|
||||||
|
#define MASTERNODE_CHECK_SECONDS 5
|
||||||
|
|
||||||
using namespace std;
|
using namespace std;
|
||||||
|
|
||||||
@ -107,7 +108,7 @@ class CMasternode
|
|||||||
private:
|
private:
|
||||||
// critical section to protect the inner data structures
|
// critical section to protect the inner data structures
|
||||||
mutable CCriticalSection cs;
|
mutable CCriticalSection cs;
|
||||||
|
int64_t lastTimeChecked;
|
||||||
public:
|
public:
|
||||||
enum state {
|
enum state {
|
||||||
MASTERNODE_ENABLED = 1,
|
MASTERNODE_ENABLED = 1,
|
||||||
@ -216,7 +217,7 @@ public:
|
|||||||
return n;
|
return n;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Check();
|
void Check(bool forceCheck = false);
|
||||||
|
|
||||||
bool IsBroadcastedWithin(int seconds)
|
bool IsBroadcastedWithin(int seconds)
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user