Learn how easy it is to sync an existing GitHub or Google Code repo to a SourceForge project! See Demo

Close

Commit [92f2c1] Maximize Restore History

Use boost::asio::deadline_timer for walletpassphrase timeout

New method in bitcoinrpc: RunLater, that uses a map of deadline
timers to run a function later.

Behavior of walletpassphrase is changed; before, calling
walletpassphrase again before the lock timeout passed
would result in: Error: Wallet is already unlocked.

You would have to call lockwallet before walletpassphrase.

Now: the last walletpassphrase with correct password
wins, and overrides any previous timeout.

Fixes issue# 1961 which was caused by spawning too many threads.

Test plan:

Start with encrypted wallet, password 'foo'
NOTE:
python -c 'import time; print("%d"%time.time())'
... will tell you current unix timestamp.

Try:

walletpassphrase foo 600
getinfo
EXPECT: unlocked_until is about 10 minutes in the future

walletpassphrase foo 1
sleep 2
sendtoaddress mun74Bvba3B1PF2YkrF4NsgcJwHXXh12LF 11
EXPECT: Error: Please enter the wallet passphrase with walletpassphrase first.

walletpassphrase foo 600
walletpassphrase foo 0
getinfo
EXPECT: wallet is locked (unlocked_until is 0)

walletpassphrase foo 10
walletpassphrase foo 600
getinfo
EXPECT: wallet is unlocked until 10 minutes in future

walletpassphrase foo 60
walletpassphrase bar 600
EXPECT: Error, incorrect passphrase
getinfo
EXPECT: wallet still scheduled to lock 60 seconds from first (successful) walletpassphrase

Gavin Andresen Gavin Andresen 2013-05-07

changed src
changed src/bitcoinrpc.cpp
changed src/bitcoinrpc.h
changed src/rpcwallet.cpp
changed src/wallet.cpp
src
Directory.
src/bitcoinrpc.cpp Diff Switch to side-by-side view
Loading...
src/bitcoinrpc.h Diff Switch to side-by-side view
Loading...
src/rpcwallet.cpp Diff Switch to side-by-side view
Loading...
src/wallet.cpp Diff Switch to side-by-side view
Loading...