diff options
author | Matt Corallo <matt@bluematt.me> | 2011-06-30 02:09:47 +0200 |
---|---|---|
committer | Matt Corallo <matt@bluematt.me> | 2011-07-13 02:11:25 +0200 |
commit | fbeb5fb4835b9c58baec3e6331b0dd5bbdca67f1 (patch) | |
tree | 25365c59c106dd893da2a7f4ca6aadf493eed8a8 | |
parent | 81598083e7c822964815bdb1e26d6c62760e52b8 (diff) |
Add the walletlock RPC method to lock the wallet manually.
-rw-r--r-- | src/rpc.cpp | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/src/rpc.cpp b/src/rpc.cpp index 5965fef433..fbed626a84 100644 --- a/src/rpc.cpp +++ b/src/rpc.cpp @@ -1488,6 +1488,29 @@ Value walletpassphrasechange(const Array& params, bool fHelp) } +Value walletlock(const Array& params, bool fHelp) +{ + if (pwalletMain->IsCrypted() && (fHelp || params.size() != 0)) + throw runtime_error( + "walletlock\n" + "Removes the wallet encryption key from memory, locking the wallet.\n" + "After calling this method, you will need to call walletpassphrase again\n" + "before being able to call any methods which require the wallet to be unlocked."); + if (fHelp) + return true; + if (!pwalletMain->IsCrypted()) + throw JSONRPCError(-15, "Error: running with an unencrypted wallet, but walletlock was called."); + + pwalletMain->Lock(); + CRITICAL_BLOCK(cs_nWalletUnlockTime) + { + nWalletUnlockTime = 0; + } + + return Value::null; +} + + Value encryptwallet(const Array& params, bool fHelp) { if (!pwalletMain->IsCrypted() && (fHelp || params.size() != 1)) @@ -1704,6 +1727,7 @@ pair<string, rpcfn_type> pCallTable[] = make_pair("keypoolrefill", &keypoolrefill), make_pair("walletpassphrase", &walletpassphrase), make_pair("walletpassphrasechange", &walletpassphrasechange), + make_pair("walletlock", &walletlock), make_pair("encryptwallet", &encryptwallet), make_pair("validateaddress", &validateaddress), make_pair("getbalance", &getbalance), @@ -1740,6 +1764,7 @@ string pAllowInSafeMode[] = "backupwallet", "keypoolrefill", "walletpassphrase", + "walletlock", "validateaddress", "getwork", }; |