Advertisement
Guest User

isinitialized bitcoin RPC patch

a guest
Feb 13th, 2011
185
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Diff 3.01 KB | None | 0 0
  1. diff --git a/init.cpp b/init.cpp
  2. index 04bdd68..c59d88d 100644
  3. --- a/init.cpp
  4. +++ b/init.cpp
  5. @@ -115,6 +115,7 @@ bool AppInit(int argc, char* argv[])
  6.      } catch (...) {
  7.          PrintException(NULL, "AppInit()");
  8.      }
  9. +    initialization_completed = true;
  10.      if (!fRet)
  11.          Shutdown(NULL);
  12.      return fRet;
  13. @@ -122,6 +123,9 @@ bool AppInit(int argc, char* argv[])
  14.  
  15.  bool AppInit2(int argc, char* argv[])
  16.  {
  17. +    if (GetBoolArg("-server") || fDaemon)
  18. +        CreateThread(ThreadRPCServer, NULL);
  19. +
  20.  #ifdef _MSC_VER
  21.      // Turn off microsoft heap dump noise
  22.      _CrtSetReportMode(_CRT_WARN, _CRTDBG_MODE_FILE);
  23. @@ -443,9 +447,6 @@ bool AppInit2(int argc, char* argv[])
  24.      if (!CreateThread(StartNode, NULL))
  25.          wxMessageBox("Error: CreateThread(StartNode) failed", "Bitcoin");
  26.  
  27. -    if (GetBoolArg("-server") || fDaemon)
  28. -        CreateThread(ThreadRPCServer, NULL);
  29. -
  30.  #if defined(__WXMSW__) && defined(GUI)
  31.      if (fFirstRun)
  32.          SetStartOnSystemStartup(true);
  33. diff --git a/rpc.cpp b/rpc.cpp
  34. index 69b09bc..6bdfe5e 100644
  35. --- a/rpc.cpp
  36. +++ b/rpc.cpp
  37. @@ -28,6 +28,8 @@ void ThreadRPCServer2(void* parg);
  38.  typedef Value(*rpcfn_type)(const Array& params, bool fHelp);
  39.  extern map<string, rpcfn_type> mapCallTable;
  40.  
  41. +bool initialization_completed = false;
  42. +
  43.  
  44.  Object JSONRPCError(int code, const string& message)
  45.  {
  46. @@ -146,6 +148,12 @@ Value help(const Array& params, bool fHelp)
  47.      return strRet;
  48.  }
  49.  
  50. +Value isinitialized(const Array& params, bool fHelp)
  51. +{
  52. +    if (fHelp || params.size() > 0)
  53. +        throw runtime_error("isinitialized\n");
  54. +    return initialization_completed;
  55. +}
  56.  
  57.  Value stop(const Array& params, bool fHelp)
  58.  {
  59. @@ -1307,6 +1315,7 @@ Value getwork(const Array& params, bool fHelp)
  60.  pair<string, rpcfn_type> pCallTable[] =
  61.  {
  62.      make_pair("help",                  &help),
  63. +    make_pair("isinitialized",         &isinitialized),
  64.      make_pair("stop",                  &stop),
  65.      make_pair("getblockcount",         &getblockcount),
  66.      make_pair("getblocknumber",        &getblocknumber),
  67. @@ -1348,6 +1357,7 @@ map<string, rpcfn_type> mapCallTable(pCallTable, pCallTable + sizeof(pCallTable)
  68.  string pAllowInSafeMode[] =
  69.  {
  70.      "help",
  71. +    "isinitialized",
  72.      "stop",
  73.      "getblockcount",
  74.      "getblocknumber",
  75. @@ -1806,6 +1816,8 @@ void ThreadRPCServer2(void* parg)
  76.              if (valMethod.type() != str_type)
  77.                  throw JSONRPCError(-32600, "Method must be a string");
  78.              string strMethod = valMethod.get_str();
  79. +            if (!initialization_completed && strMethod != "help" && strMethod != "isinitialized")
  80. +                throw JSONRPCError(-42000, "test");
  81.              if (strMethod != "getwork")
  82.                  printf("ThreadRPCServer method=%s\n", strMethod.c_str());
  83.  
  84. diff --git a/rpc.h b/rpc.h
  85. index 48a7b8a..50a1733 100644
  86. --- a/rpc.h
  87. +++ b/rpc.h
  88. @@ -4,3 +4,4 @@
  89.  
  90.  void ThreadRPCServer(void* parg);
  91.  int CommandLineRPC(int argc, char *argv[]);
  92. +extern bool initialization_completed;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement