X-Git-Url: https://git.novaco.in/?a=blobdiff_plain;f=src%2Fmain.cpp;h=fa8e764981749864d773b72d88625c841626a438;hb=66fcbe7dd8a85a9277c882b94e19e07cd739d612;hp=ca9351f5a1eacc40c97178f659bd3cc925d85c14;hpb=d8f8063eda45b8dec864b28bb98839a2dd3a8170;p=novacoin.git diff --git a/src/main.cpp b/src/main.cpp index ca9351f..fa8e764 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -309,12 +309,18 @@ bool CTransaction::IsStandard() const return false; if (!txin.scriptSig.IsPushOnly()) return false; + if (fEnforceCanonical && !txin.scriptSig.HasCanonicalPushes()) { + return false; + } } BOOST_FOREACH(const CTxOut& txout, vout) { if (!::IsStandard(txout.scriptPubKey)) return false; if (txout.nValue == 0) return false; + if (fEnforceCanonical && !txout.scriptPubKey.HasCanonicalPushes()) { + return false; + } } return true; } @@ -480,6 +486,8 @@ bool CTransaction::CheckTransaction() const if (!fTestNet && !IsCoinBase() && !txout.IsEmpty() && nTime < OUTPUT_SWITCH_TIME && txout.nValue < MIN_TXOUT_AMOUNT) return DoS(100, error("CTransaction::CheckTransaction() : txout.nValue below minimum")); + if (txout.nValue < 0) + return DoS(100, error("CTransaction::CheckTransaction() : txout.nValue is negative")); if (txout.nValue > MAX_MONEY) return DoS(100, error("CTransaction::CheckTransaction() : txout.nValue too high")); nValueOut += txout.nValue; @@ -2940,7 +2948,7 @@ string GetWarnings(string strFor) if (GetBoolArg("-testsafemode")) strRPC = "test"; - // ppcoin: wallet lock warning for minting + // wallet lock warning for minting if (strMintWarning != "") { nPriority = 0; @@ -2954,17 +2962,7 @@ string GetWarnings(string strFor) strStatusBar = strMiscWarning; } - // * Should not enter safe mode for longer invalid chain - // * If sync-checkpoint is too old do not enter safe mode - // * Display warning only in the STRICT mode - if (CheckpointsMode == Checkpoints::STRICT && Checkpoints::IsSyncCheckpointTooOld(60 * 60 * 24 * 10) && - !fTestNet && !IsInitialBlockDownload()) - { - nPriority = 100; - strStatusBar = _("WARNING: Checkpoint is too old. Wait for block chain to download, or notify developers."); - } - - // ppcoin: if detected invalid checkpoint enter safe mode + // if detected invalid checkpoint enter safe mode if (Checkpoints::hashInvalidCheckpoint != 0) { nPriority = 3000; @@ -3098,6 +3096,13 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv) return true; } + if (pfrom->nVersion < 60010) + { + printf("partner %s using a buggy client %d, disconnecting\n", pfrom->addr.ToString().c_str(), pfrom->nVersion); + pfrom->fDisconnect = true; + return true; + } + // record my external IP reported by peer if (addrFrom.IsRoutable() && addrMe.IsRoutable()) addrSeenByPeer = addrMe;