Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge #9236: Fix races for strMiscWarning and fLargeWork*Found, make …
…QT runawayException use GetWarnings 749be01 Move GetWarnings() into its own file. (Gregory Maxwell) e3ba0ef Eliminate data races for strMiscWarning and fLargeWork*Found. (Gregory Maxwell) c63198f Make QT runawayException call GetWarnings instead of directly access strMiscWarning. (Gregory Maxwell)
- Loading branch information
Showing
10 changed files
with
138 additions
and
64 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,89 @@ | ||
// Copyright (c) 2009-2010 Satoshi Nakamoto | ||
// Copyright (c) 2009-2016 The Bitcoin Core developers | ||
// Distributed under the MIT software license, see the accompanying | ||
// file COPYING or http://www.opensource.org/licenses/mit-license.php. | ||
|
||
#include "sync.h" | ||
#include "clientversion.h" | ||
#include "util.h" | ||
#include "warnings.h" | ||
|
||
CCriticalSection cs_warnings; | ||
std::string strMiscWarning; | ||
bool fLargeWorkForkFound = false; | ||
bool fLargeWorkInvalidChainFound = false; | ||
|
||
void SetMiscWarning(const std::string& strWarning) | ||
{ | ||
LOCK(cs_warnings); | ||
strMiscWarning = strWarning; | ||
} | ||
|
||
void SetfLargeWorkForkFound(bool flag) | ||
{ | ||
LOCK(cs_warnings); | ||
fLargeWorkForkFound = flag; | ||
} | ||
|
||
bool GetfLargeWorkForkFound() | ||
{ | ||
LOCK(cs_warnings); | ||
return fLargeWorkForkFound; | ||
} | ||
|
||
void SetfLargeWorkInvalidChainFound(bool flag) | ||
{ | ||
LOCK(cs_warnings); | ||
fLargeWorkInvalidChainFound = flag; | ||
} | ||
|
||
bool GetfLargeWorkInvalidChainFound() | ||
{ | ||
LOCK(cs_warnings); | ||
return fLargeWorkInvalidChainFound; | ||
} | ||
|
||
std::string GetWarnings(const std::string& strFor) | ||
{ | ||
std::string strStatusBar; | ||
std::string strRPC; | ||
std::string strGUI; | ||
const std::string uiAlertSeperator = "<hr />"; | ||
|
||
LOCK(cs_warnings); | ||
|
||
if (!CLIENT_VERSION_IS_RELEASE) { | ||
strStatusBar = "This is a pre-release test build - use at your own risk - do not use for mining or merchant applications"; | ||
strGUI = _("This is a pre-release test build - use at your own risk - do not use for mining or merchant applications"); | ||
} | ||
|
||
if (GetBoolArg("-testsafemode", DEFAULT_TESTSAFEMODE)) | ||
strStatusBar = strRPC = strGUI = "testsafemode enabled"; | ||
|
||
// Misc warnings like out of disk space and clock is wrong | ||
if (strMiscWarning != "") | ||
{ | ||
strStatusBar = strMiscWarning; | ||
strGUI += (strGUI.empty() ? "" : uiAlertSeperator) + strMiscWarning; | ||
} | ||
|
||
if (fLargeWorkForkFound) | ||
{ | ||
strStatusBar = strRPC = "Warning: The network does not appear to fully agree! Some miners appear to be experiencing issues."; | ||
strGUI += (strGUI.empty() ? "" : uiAlertSeperator) + _("Warning: The network does not appear to fully agree! Some miners appear to be experiencing issues."); | ||
} | ||
else if (fLargeWorkInvalidChainFound) | ||
{ | ||
strStatusBar = strRPC = "Warning: We do not appear to fully agree with our peers! You may need to upgrade, or other nodes may need to upgrade."; | ||
strGUI += (strGUI.empty() ? "" : uiAlertSeperator) + _("Warning: We do not appear to fully agree with our peers! You may need to upgrade, or other nodes may need to upgrade."); | ||
} | ||
|
||
if (strFor == "gui") | ||
return strGUI; | ||
else if (strFor == "statusbar") | ||
return strStatusBar; | ||
else if (strFor == "rpc") | ||
return strRPC; | ||
assert(!"GetWarnings(): invalid parameter"); | ||
return "error"; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
// Copyright (c) 2009-2010 Satoshi Nakamoto | ||
// Copyright (c) 2009-2016 The Bitcoin Core developers | ||
// Distributed under the MIT software license, see the accompanying | ||
// file COPYING or http://www.opensource.org/licenses/mit-license.php. | ||
|
||
#ifndef BITCOIN_WARNINGS_H | ||
#define BITCOIN_WARNINGS_H | ||
|
||
#include <stdlib.h> | ||
#include <string> | ||
|
||
void SetMiscWarning(const std::string& strWarning); | ||
void SetfLargeWorkForkFound(bool flag); | ||
bool GetfLargeWorkForkFound(); | ||
void SetfLargeWorkInvalidChainFound(bool flag); | ||
bool GetfLargeWorkInvalidChainFound(); | ||
std::string GetWarnings(const std::string& strFor); | ||
|
||
static const bool DEFAULT_TESTSAFEMODE = false; | ||
|
||
#endif // BITCOIN_WARNINGS_H |