Browse Source

Push unlocked_until in getinfo.

0.8
Matt Corallo 14 years ago
parent
commit
98545d2cdf
  1. 27
      src/rpc.cpp

27
src/rpc.cpp

@ -36,6 +36,9 @@ void ThreadRPCServer2(void* parg); @@ -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) @@ -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) @@ -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;

Loading…
Cancel
Save