warning message if clock is too far off
This commit is contained in:
parent
7a37c906a1
commit
c545563d46
8
main.cpp
8
main.cpp
@ -1579,10 +1579,10 @@ bool CheckDiskSpace(int64 nAdditionalBytes)
|
|||||||
if (nFreeBytesAvailable < (int64)15000000 + nAdditionalBytes)
|
if (nFreeBytesAvailable < (int64)15000000 + nAdditionalBytes)
|
||||||
{
|
{
|
||||||
fShutdown = true;
|
fShutdown = true;
|
||||||
printf("*** %s***\n", _("Warning: Disk space is low "));
|
string strMessage = _("Warning: Disk space is low ");
|
||||||
#ifdef GUI
|
strWarning = strMessage;
|
||||||
ThreadSafeMessageBox(_("Warning: Disk space is low "), "Bitcoin", wxOK | wxICON_EXCLAMATION);
|
printf("*** %s\n", strMessage.c_str());
|
||||||
#endif
|
ThreadSafeMessageBox(strMessage, "Bitcoin", wxOK | wxICON_EXCLAMATION);
|
||||||
CreateThread(Shutdown, NULL);
|
CreateThread(Shutdown, NULL);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
34
noui.h
34
noui.h
@ -3,7 +3,35 @@
|
|||||||
// file license.txt or http://www.opensource.org/licenses/mit-license.php.
|
// file license.txt or http://www.opensource.org/licenses/mit-license.php.
|
||||||
|
|
||||||
|
|
||||||
inline int MyMessageBox(const string& message, const string& caption="Message", int style=4, void* parent=NULL, int x=-1, int y=-1)
|
typedef void wxWindow;
|
||||||
|
#define wxYES 0x00000002
|
||||||
|
#define wxOK 0x00000004
|
||||||
|
#define wxNO 0x00000008
|
||||||
|
#define wxYES_NO (wxYES|wxNO)
|
||||||
|
#define wxCANCEL 0x00000010
|
||||||
|
#define wxAPPLY 0x00000020
|
||||||
|
#define wxCLOSE 0x00000040
|
||||||
|
#define wxOK_DEFAULT 0x00000000
|
||||||
|
#define wxYES_DEFAULT 0x00000000
|
||||||
|
#define wxNO_DEFAULT 0x00000080
|
||||||
|
#define wxCANCEL_DEFAULT 0x80000000
|
||||||
|
#define wxICON_EXCLAMATION 0x00000100
|
||||||
|
#define wxICON_HAND 0x00000200
|
||||||
|
#define wxICON_WARNING wxICON_EXCLAMATION
|
||||||
|
#define wxICON_ERROR wxICON_HAND
|
||||||
|
#define wxICON_QUESTION 0x00000400
|
||||||
|
#define wxICON_INFORMATION 0x00000800
|
||||||
|
#define wxICON_STOP wxICON_HAND
|
||||||
|
#define wxICON_ASTERISK wxICON_INFORMATION
|
||||||
|
#define wxICON_MASK (0x00000100|0x00000200|0x00000400|0x00000800)
|
||||||
|
#define wxFORWARD 0x00001000
|
||||||
|
#define wxBACKWARD 0x00002000
|
||||||
|
#define wxRESET 0x00004000
|
||||||
|
#define wxHELP 0x00008000
|
||||||
|
#define wxMORE 0x00010000
|
||||||
|
#define wxSETUP 0x00020000
|
||||||
|
|
||||||
|
inline int MyMessageBox(const string& message, const string& caption="Message", int style=wxOK, wxWindow* parent=NULL, int x=-1, int y=-1)
|
||||||
{
|
{
|
||||||
printf("%s: %s\n", caption.c_str(), message.c_str());
|
printf("%s: %s\n", caption.c_str(), message.c_str());
|
||||||
fprintf(stderr, "%s: %s\n", caption.c_str(), message.c_str());
|
fprintf(stderr, "%s: %s\n", caption.c_str(), message.c_str());
|
||||||
@ -11,12 +39,12 @@ inline int MyMessageBox(const string& message, const string& caption="Message",
|
|||||||
}
|
}
|
||||||
#define wxMessageBox MyMessageBox
|
#define wxMessageBox MyMessageBox
|
||||||
|
|
||||||
inline int ThreadSafeMessageBox(const string& message, const string& caption, int style, void* parent, int x, int y)
|
inline int ThreadSafeMessageBox(const string& message, const string& caption, int style=wxOK, wxWindow* parent=NULL, int x=-1, int y=-1)
|
||||||
{
|
{
|
||||||
return MyMessageBox(message, caption, style, parent, x, y);
|
return MyMessageBox(message, caption, style, parent, x, y);
|
||||||
}
|
}
|
||||||
|
|
||||||
inline bool ThreadSafeAskFee(int64 nFeeRequired, const string& strCaption, void* parent)
|
inline bool ThreadSafeAskFee(int64 nFeeRequired, const string& strCaption, wxWindow* parent)
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
1
rpc.cpp
1
rpc.cpp
@ -247,6 +247,7 @@ Value getinfo(const Array& params, bool fHelp)
|
|||||||
obj.push_back(Pair("genproclimit", (int)(fLimitProcessors ? nLimitProcessors : -1)));
|
obj.push_back(Pair("genproclimit", (int)(fLimitProcessors ? nLimitProcessors : -1)));
|
||||||
obj.push_back(Pair("difficulty", (double)GetDifficulty()));
|
obj.push_back(Pair("difficulty", (double)GetDifficulty()));
|
||||||
obj.push_back(Pair("hashespersec", gethashespersec(params, false)));
|
obj.push_back(Pair("hashespersec", gethashespersec(params, false)));
|
||||||
|
obj.push_back(Pair("status", strWarning));
|
||||||
return obj;
|
return obj;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -20,7 +20,7 @@ class CDataStream;
|
|||||||
class CAutoFile;
|
class CAutoFile;
|
||||||
|
|
||||||
static const int VERSION = 310;
|
static const int VERSION = 310;
|
||||||
static const char* pszSubVer = ".4";
|
static const char* pszSubVer = ".5";
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
27
util.cpp
27
util.cpp
@ -14,6 +14,7 @@ char pszSetDataDir[MAX_PATH] = "";
|
|||||||
bool fShutdown = false;
|
bool fShutdown = false;
|
||||||
bool fDaemon = false;
|
bool fDaemon = false;
|
||||||
bool fCommandLine = false;
|
bool fCommandLine = false;
|
||||||
|
string strWarning;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -742,14 +743,28 @@ void AddTimeData(unsigned int ip, int64 nTime)
|
|||||||
{
|
{
|
||||||
sort(vTimeOffsets.begin(), vTimeOffsets.end());
|
sort(vTimeOffsets.begin(), vTimeOffsets.end());
|
||||||
int64 nMedian = vTimeOffsets[vTimeOffsets.size()/2];
|
int64 nMedian = vTimeOffsets[vTimeOffsets.size()/2];
|
||||||
nTimeOffset = nMedian;
|
// Only let other nodes change our time by so much
|
||||||
if ((nMedian > 0 ? nMedian : -nMedian) > 70 * 60)
|
if (abs64(nMedian) < 70 * 60)
|
||||||
|
{
|
||||||
|
nTimeOffset = nMedian;
|
||||||
|
}
|
||||||
|
else
|
||||||
{
|
{
|
||||||
// Only let other nodes change our clock so far before we
|
|
||||||
// go to the NTP servers
|
|
||||||
/// todo: Get time from NTP servers, then set a flag
|
|
||||||
/// to make sure it doesn't get changed again
|
|
||||||
nTimeOffset = 0;
|
nTimeOffset = 0;
|
||||||
|
// If nobody else has the same time as us, give a warning
|
||||||
|
bool fMatch = false;
|
||||||
|
foreach(int64 nOffset, vTimeOffsets)
|
||||||
|
if (nOffset != 0 && abs64(nOffset) < 10 * 60)
|
||||||
|
fMatch = true;
|
||||||
|
static bool fDone;
|
||||||
|
if (!fMatch && !fDone)
|
||||||
|
{
|
||||||
|
fDone = true;
|
||||||
|
string strMessage = _("Warning: Check your system date and time, you may not be able to generate or receive the most recent blocks!");
|
||||||
|
strWarning = strMessage;
|
||||||
|
printf("*** %s\n", strMessage.c_str());
|
||||||
|
boost::thread(bind(ThreadSafeMessageBox, strMessage+" ", string("Bitcoin"), wxOK | wxICON_EXCLAMATION, (wxWindow*)NULL, -1, -1));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
foreach(int64 n, vTimeOffsets)
|
foreach(int64 n, vTimeOffsets)
|
||||||
printf("%+"PRI64d" ", n);
|
printf("%+"PRI64d" ", n);
|
||||||
|
6
util.h
6
util.h
@ -143,6 +143,7 @@ extern char pszSetDataDir[MAX_PATH];
|
|||||||
extern bool fShutdown;
|
extern bool fShutdown;
|
||||||
extern bool fDaemon;
|
extern bool fDaemon;
|
||||||
extern bool fCommandLine;
|
extern bool fCommandLine;
|
||||||
|
extern string strWarning;
|
||||||
|
|
||||||
void RandAddSeed();
|
void RandAddSeed();
|
||||||
void RandAddSeedPerfmon();
|
void RandAddSeedPerfmon();
|
||||||
@ -298,6 +299,11 @@ inline int64 roundint64(double d)
|
|||||||
return (int64)(d > 0 ? d + 0.5 : d - 0.5);
|
return (int64)(d > 0 ? d + 0.5 : d - 0.5);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
inline int64 abs64(int64 n)
|
||||||
|
{
|
||||||
|
return (n >= 0 ? n : -n);
|
||||||
|
}
|
||||||
|
|
||||||
template<typename T>
|
template<typename T>
|
||||||
string HexStr(const T itbegin, const T itend, bool fSpaces=true)
|
string HexStr(const T itbegin, const T itend, bool fSpaces=true)
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user