From 98545d2cdf53f7b6f32eba7a7f51034a9ca994c2 Mon Sep 17 00:00:00 2001 From: Matt Corallo Date: Wed, 29 Jun 2011 00:47:41 +0200 Subject: [PATCH] Push unlocked_until in getinfo. --- src/rpc.cpp | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/src/rpc.cpp b/src/rpc.cpp index 3a573043..5965fef4 100644 --- a/src/rpc.cpp +++ b/src/rpc.cpp @@ -36,6 +36,9 @@ void ThreadRPCServer2(void* parg); typedef Value(*rpcfn_type)(const Array& params, bool fHelp); extern map 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;