mirror of
https://github.com/dashpay/dash.git
synced 2024-12-28 21:42:47 +01:00
Resolves issue #922 - "wallet passphrase timeout of several years doesn't work"
2^31 milliseconds is only about 25 days. Also clamps Sleep() to 10 years, because it currently sleeps for 0 seconds when the sleep time would cross 2^31 seconds since the epoch. Hopefully boost will be fixed by 2028.
This commit is contained in:
parent
4585d828b4
commit
82a10c8170
@ -1548,7 +1548,7 @@ void ThreadTopUpKeyPool(void* parg)
|
|||||||
|
|
||||||
void ThreadCleanWalletPassphrase(void* parg)
|
void ThreadCleanWalletPassphrase(void* parg)
|
||||||
{
|
{
|
||||||
int64 nMyWakeTime = GetTimeMillis() + *((int*)parg) * 1000;
|
int64 nMyWakeTime = GetTimeMillis() + *((int64*)parg) * 1000;
|
||||||
|
|
||||||
ENTER_CRITICAL_SECTION(cs_nWalletUnlockTime);
|
ENTER_CRITICAL_SECTION(cs_nWalletUnlockTime);
|
||||||
|
|
||||||
@ -1584,7 +1584,7 @@ void ThreadCleanWalletPassphrase(void* parg)
|
|||||||
|
|
||||||
LEAVE_CRITICAL_SECTION(cs_nWalletUnlockTime);
|
LEAVE_CRITICAL_SECTION(cs_nWalletUnlockTime);
|
||||||
|
|
||||||
delete (int*)parg;
|
delete (int64*)parg;
|
||||||
}
|
}
|
||||||
|
|
||||||
Value walletpassphrase(const Array& params, bool fHelp)
|
Value walletpassphrase(const Array& params, bool fHelp)
|
||||||
@ -1619,7 +1619,7 @@ Value walletpassphrase(const Array& params, bool fHelp)
|
|||||||
"Stores the wallet decryption key in memory for <timeout> seconds.");
|
"Stores the wallet decryption key in memory for <timeout> seconds.");
|
||||||
|
|
||||||
CreateThread(ThreadTopUpKeyPool, NULL);
|
CreateThread(ThreadTopUpKeyPool, NULL);
|
||||||
int* pnSleepTime = new int(params[1].get_int());
|
int64* pnSleepTime = new int64(params[1].get_int64());
|
||||||
CreateThread(ThreadCleanWalletPassphrase, pnSleepTime);
|
CreateThread(ThreadCleanWalletPassphrase, pnSleepTime);
|
||||||
|
|
||||||
return Value::null;
|
return Value::null;
|
||||||
|
@ -88,7 +88,9 @@ T* alignup(T* p)
|
|||||||
#define Beep(n1,n2) (0)
|
#define Beep(n1,n2) (0)
|
||||||
inline void Sleep(int64 n)
|
inline void Sleep(int64 n)
|
||||||
{
|
{
|
||||||
boost::thread::sleep(boost::get_system_time() + boost::posix_time::milliseconds(n));
|
/*Boost has a year 2038 problem— if the request sleep time is past epoch+2^31 seconds the sleep returns instantly.
|
||||||
|
So we clamp our sleeps here to 10 years and hope that boost is fixed by 2028.*/
|
||||||
|
boost::thread::sleep(boost::get_system_time() + boost::posix_time::milliseconds(n>315576000000LL?315576000000LL:n));
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user