aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatt Corallo <matt@bluematt.me>2011-06-30 02:09:47 +0200
committerMatt Corallo <matt@bluematt.me>2011-07-13 02:11:25 +0200
commitfbeb5fb4835b9c58baec3e6331b0dd5bbdca67f1 (patch)
tree25365c59c106dd893da2a7f4ca6aadf493eed8a8
parent81598083e7c822964815bdb1e26d6c62760e52b8 (diff)
Add the walletlock RPC method to lock the wallet manually.
-rw-r--r--src/rpc.cpp25
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",
};