|
|
|
@ -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; |
|
|
|
|