Push unlocked_until in getinfo.

This commit is contained in:
Matt Corallo 2011-06-29 00:47:41 +02:00
parent ddebdd9a8f
commit 98545d2cdf

View File

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