Bugfix: Fix various places where Bitcoin-Qt was being shutdown improperly
[novacoin.git] / src / bitcoinrpc.cpp
index 92f2f9e..38f102e 100644 (file)
@@ -165,7 +165,8 @@ Value stop(const Array& params, bool fHelp)
             "Stop bitcoin server.");
 #ifndef QT_GUI
     // Shutdown will take long enough that the response should get back
-    CreateThread(Shutdown, NULL);
+    // NOTE: This should actually work with Bitcoin-Qt too now, but 0.5.0 didn't allow it
+    StartShutdown();
     return "bitcoin server stopping";
 #else
     throw runtime_error("NYI: cannot shut down GUI with RPC command");
@@ -1587,7 +1588,7 @@ Value encryptwallet(const Array& params, bool fHelp)
     // BDB seems to have a bad habit of writing old data into
     // slack space in .dat files; that is bad if the old data is
     // unencrypted private keys.  So:
-    CreateThread(Shutdown, NULL);
+    StartShutdown();
     return "wallet encrypted; bitcoin server stopping, restart to run with encrypted wallet";
 }
 
@@ -2173,10 +2174,6 @@ void ThreadRPCServer(void* parg)
     printf("ThreadRPCServer exiting\n");
 }
 
-#ifdef QT_GUI
-extern bool HACK_SHUTDOWN;
-#endif
-
 void ThreadRPCServer2(void* parg)
 {
     printf("ThreadRPCServer started\n");
@@ -2203,7 +2200,7 @@ void ThreadRPCServer2(void* parg)
                 EncodeBase58(&rand_pwd[0],&rand_pwd[0]+32).c_str()),
             _("Error"), wxOK | wxMODAL);
 #ifndef QT_GUI
-        CreateThread(Shutdown, NULL);
+        StartShutdown();
 #endif
         return;
     }
@@ -2228,9 +2225,9 @@ void ThreadRPCServer2(void* parg)
     }
     catch(boost::system::system_error &e)
     {
-        HACK_SHUTDOWN = true;
         ThreadSafeMessageBox(strprintf(_("An error occured while setting up the RPC port %i for listening: %s"), endpoint.port(), e.what()),
                              _("Error"), wxOK | wxMODAL);
+        StartShutdown();
         return;
     }
 #endif