@ -353,7 +353,7 @@ Value getinfo(const Array& params, bool fHelp)
@@ -353,7 +353,7 @@ Value getinfo(const Array& params, bool fHelp)
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 ( " unlocked_until " , ( boost : : int64_t ) nWalletUnlockTime / 1000 ) ) ;
obj . push_back ( Pair ( " errors " , GetWarnings ( " statusbar " ) ) ) ;
return obj ;
}
@ -1537,7 +1537,7 @@ void ThreadTopUpKeyPool(void* parg)
@@ -1537,7 +1537,7 @@ void ThreadTopUpKeyPool(void* parg)
void ThreadCleanWalletPassphrase ( void * parg )
{
int64 nMyWakeTime = GetTime ( ) + * ( ( int * ) parg ) ;
int64 nMyWakeTime = GetTimeMillis ( ) + * ( ( int * ) parg ) * 1000 ;
ENTER_CRITICAL_SECTION ( cs_nWalletUnlockTime ) ;
@ -1545,18 +1545,26 @@ void ThreadCleanWalletPassphrase(void* parg)
@@ -1545,18 +1545,26 @@ void ThreadCleanWalletPassphrase(void* parg)
{
nWalletUnlockTime = nMyWakeTime ;
while ( GetTime ( ) < nWalletUnlockTime )
do
{
int64 nToSleep = GetTime ( ) - nWalletUnlockTime ;
if ( nWalletUnlockTime = = 0 )
break ;
int64 nToSleep = nWalletUnlockTime - GetTimeMillis ( ) ;
if ( nToSleep < = 0 )
break ;
LEAVE_CRITICAL_SECTION ( cs_nWalletUnlockTime ) ;
Sleep ( nToSleep ) ;
ENTER_CRITICAL_SECTION ( cs_nWalletUnlockTime ) ;
}
} while ( 1 ) ;
if ( nWalletUnlockTime )
{
nWalletUnlockTime = 0 ;
pwalletMain - > Lock ( ) ;
}
}
else
{
if ( nWalletUnlockTime < nMyWakeTime )
@ -1653,9 +1661,9 @@ Value walletlock(const Array& params, bool fHelp)
@@ -1653,9 +1661,9 @@ Value walletlock(const Array& params, bool fHelp)
if ( ! pwalletMain - > IsCrypted ( ) )
throw JSONRPCError ( - 15 , " Error: running with an unencrypted wallet, but walletlock was called. " ) ;
pwalletMain - > Lock ( ) ;
CRITICAL_BLOCK ( cs_nWalletUnlockTime )
{
pwalletMain - > Lock ( ) ;
nWalletUnlockTime = 0 ;
}