Push unlocked_until in getinfo.
authorMatt Corallo <matt@bluematt.me>
Tue, 28 Jun 2011 22:47:41 +0000 (00:47 +0200)
committerMatt Corallo <matt@bluematt.me>
Wed, 13 Jul 2011 00:11:25 +0000 (02:11 +0200)
src/rpc.cpp

index 3a57304..5965fef 100644 (file)
@@ -36,6 +36,9 @@ void ThreadRPCServer2(void* parg);
 typedef Value(*rpcfn_type)(const Array& params, bool fHelp);
 extern map<string, rpcfn_type> mapCallTable;
 
+static int64 nWalletUnlockTime;
+static CCriticalSection cs_nWalletUnlockTime;
+
 
 Object JSONRPCError(int code, const string& message)
 {
@@ -311,6 +314,8 @@ Value getinfo(const Array& params, bool fHelp)
     obj.push_back(Pair("keypoololdest", (boost::int64_t)pwalletMain->GetOldestKeyPoolTime()));
     obj.push_back(Pair("keypoolsize",   pwalletMain->GetKeyPoolSize()));
     obj.push_back(Pair("paytxfee",      ValueFromAmount(nTransactionFee)));
+    if (pwalletMain->IsCrypted())
+        obj.push_back(Pair("unlocked_until", (boost::int64_t)nWalletUnlockTime));
     obj.push_back(Pair("errors",        GetWarnings("statusbar")));
     return obj;
 }
@@ -1360,31 +1365,29 @@ void ThreadTopUpKeyPool(void* parg)
 
 void ThreadCleanWalletPassphrase(void* parg)
 {
-    static int64 nWakeTime;
     int64 nMyWakeTime = GetTime() + *((int*)parg);
-    static CCriticalSection cs_nWakeTime;
 
-    if (nWakeTime == 0)
+    if (nWalletUnlockTime == 0)
     {
-        CRITICAL_BLOCK(cs_nWakeTime)
+        CRITICAL_BLOCK(cs_nWalletUnlockTime)
         {
-            nWakeTime = nMyWakeTime;
+            nWalletUnlockTime = nMyWakeTime;
         }
 
-        while (GetTime() < nWakeTime)
-            Sleep(GetTime() - nWakeTime);
+        while (GetTime() < nWalletUnlockTime)
+            Sleep(GetTime() - nWalletUnlockTime);
 
-        CRITICAL_BLOCK(cs_nWakeTime)
+        CRITICAL_BLOCK(cs_nWalletUnlockTime)
         {
-            nWakeTime = 0;
+            nWalletUnlockTime = 0;
         }
     }
     else
     {
-        CRITICAL_BLOCK(cs_nWakeTime)
+        CRITICAL_BLOCK(cs_nWalletUnlockTime)
         {
-            if (nWakeTime < nMyWakeTime)
-                nWakeTime = nMyWakeTime;
+            if (nWalletUnlockTime < nMyWakeTime)
+                nWalletUnlockTime = nMyWakeTime;
         }
         free(parg);
         return;