boolean checkAndUpdate() { return checkAndUpdate(true, false); } boolean checkAndUpdate(boolean fRequireEnabled)
boolean checkAndUpdate(boolean fRequireEnabled) { return checkAndUpdate(fRequireEnabled, false); }
void processMasternodePing(Peer peer, MasternodePing mnp) { //log.info("masternode - mnp - Masternode ping(hash={}, vin: {}", mnp.getHash(), mnp.vin.toString()); if(mapSeenMasternodePing.containsKey(mnp.getHash())) return; //seen lock.lock(); try { mapSeenMasternodePing.put(mnp.getHash(), mnp); } finally { lock.unlock(); } log.info("masternode-mnp - Masternode ping, vin: {} new\n", mnp.vin.toString()); int nDoS = 0; if(mnp.checkAndUpdate()) return; if(nDoS > 0) { // if anything significant failed, mark that node //Misbehaving(pfrom->GetId(), nDoS); } else { // if nothing significant failed, search existing Masternode list Masternode pmn = find(mnp.vin); // if it's known, don't ask for the mnb, just return if(pmn != null) return; } // something significant is broken or mn is unknown, // we might have to ask for a masternode entry once askForMN(peer, mnp.vin); } public void updateMasternodePing(MasternodePing lastPing)
boolean updateFromNewBroadcast(MasternodeBroadcast mnb) { if(mnb.sigTime > sigTime) { pubKeyMasternode = mnb.pubKeyMasternode; sigTime = mnb.sigTime; sig = mnb.sig; protocolVersion = mnb.protocolVersion; address = mnb.address.duplicate(); lastTimeChecked = 0; int nDoS = 0; if(mnb.lastPing == new MasternodePing(context) || (!mnb.lastPing.equals(new MasternodePing(context)) && mnb.lastPing.checkAndUpdate(false))) { lastPing = mnb.lastPing; context.masternodeManager.updateMasternodePing(lastPing); } return true; } return false; }
if(lastPing.equals(MasternodePing.EMPTY) || !lastPing.checkAndUpdate(false, true)) return false;
if(lastPing.equals(MasternodePing.EMPTY) || !lastPing.checkAndUpdate(false, true)) return false;
if(lastPing == MasternodePing.EMPTY || !lastPing.checkAndUpdate(false, true)) return false;