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