Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- diff --git a/init.cpp b/init.cpp
- index 04bdd68..52cf7a1 100644
- --- a/init.cpp
- +++ b/init.cpp
- @@ -115,6 +115,7 @@ bool AppInit(int argc, char* argv[])
- } catch (...) {
- PrintException(NULL, "AppInit()");
- }
- + fInitializationCompleted = true;
- if (!fRet)
- Shutdown(NULL);
- return fRet;
- @@ -122,6 +123,9 @@ bool AppInit(int argc, char* argv[])
- bool AppInit2(int argc, char* argv[])
- {
- + if (GetBoolArg("-server") || fDaemon)
- + CreateThread(ThreadRPCServer, NULL);
- +
- #ifdef _MSC_VER
- // Turn off microsoft heap dump noise
- _CrtSetReportMode(_CRT_WARN, _CRTDBG_MODE_FILE);
- @@ -443,9 +447,6 @@ bool AppInit2(int argc, char* argv[])
- if (!CreateThread(StartNode, NULL))
- wxMessageBox("Error: CreateThread(StartNode) failed", "Bitcoin");
- - if (GetBoolArg("-server") || fDaemon)
- - CreateThread(ThreadRPCServer, NULL);
- -
- #if defined(__WXMSW__) && defined(GUI)
- if (fFirstRun)
- SetStartOnSystemStartup(true);
- diff --git a/rpc.cpp b/rpc.cpp
- index 69b09bc..72fc9a8 100644
- --- a/rpc.cpp
- +++ b/rpc.cpp
- @@ -28,6 +28,8 @@ void ThreadRPCServer2(void* parg);
- typedef Value(*rpcfn_type)(const Array& params, bool fHelp);
- extern map<string, rpcfn_type> mapCallTable;
- +bool fInitializationCompleted = false;
- +
- Object JSONRPCError(int code, const string& message)
- {
- @@ -146,7 +148,6 @@ Value help(const Array& params, bool fHelp)
- return strRet;
- }
- -
- Value stop(const Array& params, bool fHelp)
- {
- if (fHelp || params.size() != 0)
- @@ -277,18 +278,22 @@ Value getinfo(const Array& params, bool fHelp)
- Object obj;
- obj.push_back(Pair("version", (int)VERSION));
- - obj.push_back(Pair("balance", (double)GetBalance() / (double)COIN));
- - obj.push_back(Pair("blocks", (int)nBestHeight));
- - obj.push_back(Pair("connections", (int)vNodes.size()));
- - obj.push_back(Pair("proxy", (fUseProxy ? addrProxy.ToStringIPPort() : string())));
- - obj.push_back(Pair("generate", (bool)fGenerateBitcoins));
- - obj.push_back(Pair("genproclimit", (int)(fLimitProcessors ? nLimitProcessors : -1)));
- - obj.push_back(Pair("difficulty", (double)GetDifficulty()));
- - obj.push_back(Pair("hashespersec", gethashespersec(params, false)));
- - obj.push_back(Pair("testnet", fTestNet));
- - obj.push_back(Pair("keypoololdest", (boost::int64_t)GetOldestKeyPoolTime()));
- - obj.push_back(Pair("paytxfee", (double)nTransactionFee / (double)COIN));
- - obj.push_back(Pair("errors", GetWarnings("statusbar")));
- + obj.push_back(Pair("isinitialized", (bool)fInitializationCompleted));
- + if (fInitializationCompleted)
- + {
- + obj.push_back(Pair("balance", (double)GetBalance() / (double)COIN));
- + obj.push_back(Pair("blocks", (int)nBestHeight));
- + obj.push_back(Pair("connections", (int)vNodes.size()));
- + obj.push_back(Pair("proxy", (fUseProxy ? addrProxy.ToStringIPPort() : string())));
- + obj.push_back(Pair("generate", (bool)fGenerateBitcoins));
- + obj.push_back(Pair("genproclimit", (int)(fLimitProcessors ? nLimitProcessors : -1)));
- + obj.push_back(Pair("difficulty", (double)GetDifficulty()));
- + obj.push_back(Pair("hashespersec", gethashespersec(params, false)));
- + obj.push_back(Pair("testnet", fTestNet));
- + obj.push_back(Pair("keypoololdest", (boost::int64_t)GetOldestKeyPoolTime()));
- + obj.push_back(Pair("paytxfee", (double)nTransactionFee / (double)COIN));
- + obj.push_back(Pair("errors", GetWarnings("statusbar")));
- + }
- return obj;
- }
- @@ -1806,6 +1811,8 @@ void ThreadRPCServer2(void* parg)
- if (valMethod.type() != str_type)
- throw JSONRPCError(-32600, "Method must be a string");
- string strMethod = valMethod.get_str();
- + if (!fInitializationCompleted && strMethod != "help" && strMethod != "getinfo")
- + throw JSONRPCError(-42000, "Still initializing");
- if (strMethod != "getwork")
- printf("ThreadRPCServer method=%s\n", strMethod.c_str());
- diff --git a/rpc.h b/rpc.h
- index 48a7b8a..85c3ef3 100644
- --- a/rpc.h
- +++ b/rpc.h
- @@ -4,3 +4,4 @@
- void ThreadRPCServer(void* parg);
- int CommandLineRPC(int argc, char *argv[]);
- +extern bool fInitializationCompleted;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement