Branch data Line data Source code
1 : : // Copyright (c) 2009-2010 Satoshi Nakamoto 2 : : // Copyright (c) 2009-2022 The Bitcoin Core developers 3 : : // Distributed under the MIT software license, see the accompanying 4 : : // file COPYING or http://www.opensource.org/licenses/mit-license.php. 5 : : 6 : : #include <warnings.h> 7 : : 8 : : #include <common/system.h> 9 : : #include <sync.h> 10 : : #include <util/string.h> 11 : : #include <util/translation.h> 12 : : 13 : : #include <vector> 14 : : 15 : : static GlobalMutex g_warnings_mutex; 16 : 2 : static bilingual_str g_misc_warnings GUARDED_BY(g_warnings_mutex); 17 : : static bool fLargeWorkInvalidChainFound GUARDED_BY(g_warnings_mutex) = false; 18 : : 19 : 0 : void SetMiscWarning(const bilingual_str& warning) 20 : : { 21 : 0 : LOCK(g_warnings_mutex); 22 [ # # ]: 0 : g_misc_warnings = warning; 23 : 0 : } 24 : : 25 : 0 : void SetfLargeWorkInvalidChainFound(bool flag) 26 : : { 27 : 0 : LOCK(g_warnings_mutex); 28 : 0 : fLargeWorkInvalidChainFound = flag; 29 : 0 : } 30 : : 31 : 0 : bilingual_str GetWarnings(bool verbose) 32 : : { 33 : 0 : bilingual_str warnings_concise; 34 : 0 : std::vector<bilingual_str> warnings_verbose; 35 : : 36 [ # # ][ # # ]: 0 : LOCK(g_warnings_mutex); 37 : : 38 : : // Pre-release build warning 39 : : if (!CLIENT_VERSION_IS_RELEASE) { 40 [ # # ]: 0 : warnings_concise = _("This is a pre-release test build - use at your own risk - do not use for mining or merchant applications"); 41 [ # # ]: 0 : warnings_verbose.emplace_back(warnings_concise); 42 : : } 43 : : 44 : : // Misc warnings like out of disk space and clock is wrong 45 [ # # ][ # # ]: 0 : if (!g_misc_warnings.empty()) { 46 [ # # ]: 0 : warnings_concise = g_misc_warnings; 47 [ # # ]: 0 : warnings_verbose.emplace_back(warnings_concise); 48 : 0 : } 49 : : 50 [ # # ]: 0 : if (fLargeWorkInvalidChainFound) { 51 [ # # ]: 0 : warnings_concise = _("Warning: We do not appear to fully agree with our peers! You may need to upgrade, or other nodes may need to upgrade."); 52 [ # # ]: 0 : warnings_verbose.emplace_back(warnings_concise); 53 : 0 : } 54 : : 55 [ # # ]: 0 : if (verbose) { 56 [ # # ][ # # ]: 0 : return Join(warnings_verbose, Untranslated("<hr />")); [ # # ] 57 : : } 58 : : 59 : 0 : return warnings_concise; 60 : 0 : }