diff --git a/src/alert.cpp b/src/alert.cpp index aa7ac748d..6e41b11a2 100644 --- a/src/alert.cpp +++ b/src/alert.cpp @@ -41,7 +41,7 @@ void CUnsignedAlert::SetNull() strComment.clear(); strStatusBar.clear(); - strReserved.clear(); + strRPCError.clear(); } std::string CUnsignedAlert::ToString() const @@ -66,6 +66,7 @@ std::string CUnsignedAlert::ToString() const " nPriority = %d\n" " strComment = \"%s\"\n" " strStatusBar = \"%s\"\n" + " strRPCError = \"%s\"\n" ")\n", nVersion, nRelayUntil, @@ -78,7 +79,8 @@ std::string CUnsignedAlert::ToString() const strSetSubVer, nPriority, strComment, - strStatusBar); + strStatusBar, + strRPCError); } void CAlert::SetNull() diff --git a/src/alert.h b/src/alert.h index 746967c4a..b5e1cd110 100644 --- a/src/alert.h +++ b/src/alert.h @@ -44,7 +44,7 @@ public: // Actions std::string strComment; std::string strStatusBar; - std::string strReserved; + std::string strRPCError; ADD_SERIALIZE_METHODS; @@ -64,7 +64,7 @@ public: READWRITE(LIMITED_STRING(strComment, 65536)); READWRITE(LIMITED_STRING(strStatusBar, 256)); - READWRITE(LIMITED_STRING(strReserved, 256)); + READWRITE(LIMITED_STRING(strRPCError, 256)); } void SetNull(); diff --git a/src/main.cpp b/src/main.cpp index d0321ff62..f13d20bc0 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -4069,6 +4069,9 @@ string GetWarnings(string strFor) { nPriority = alert.nPriority; strStatusBar = alert.strStatusBar; + if (alert.nPriority >= ALERT_PRIORITY_SAFE_MODE) { + strRPC = alert.strRPCError; + } } } } diff --git a/src/main.h b/src/main.h index 9c875d8c3..842e79856 100644 --- a/src/main.h +++ b/src/main.h @@ -57,6 +57,8 @@ static const unsigned int DEFAULT_BLOCK_MIN_SIZE = 0; static const unsigned int DEFAULT_BLOCK_PRIORITY_SIZE = 50000; /** Default for accepting alerts from the P2P network. */ static const bool DEFAULT_ALERTS = true; +/** Minimum alert priority for enabling safe mode. */ +static const int ALERT_PRIORITY_SAFE_MODE = 4000; /** The maximum size for transactions we're willing to relay/mine */ static const unsigned int MAX_STANDARD_TX_SIZE = 100000; /** Maximum number of signature check operations in an IsStandard() P2SH script */ diff --git a/src/sendalert.cpp b/src/sendalert.cpp index d68b38f9e..07607ef15 100644 --- a/src/sendalert.cpp +++ b/src/sendalert.cpp @@ -85,9 +85,11 @@ void ThreadSendAlert() // 1000 for Misc warnings like out of disk space and clock is wrong // 2000 for longer invalid proof-of-work chain // Higher numbers mean higher priority + // 4000 or higher will put the RPC into safe mode alert.nPriority = 5000; alert.strComment = ""; alert.strStatusBar = "URGENT: Upgrade required: see https://z.cash"; + alert.strRPCError = "URGENT: Upgrade required: see https://z.cash"; // Set specific client version/versions here. If setSubVer is empty, no filtering on subver is done: // alert.setSubVer.insert(std::string("/Satoshi:0.7.2/"));