Skip to content
Merged
Prev Previous commit
Next Next commit
Add the walletlock RPC method to lock the wallet manually.
  • Loading branch information
Matt Corallo committed Jul 13, 2011
commit fbeb5fb4835b9c58baec3e6331b0dd5bbdca67f1
25 changes: 25 additions & 0 deletions src/rpc.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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))
Expand Down Expand Up @@ -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),
Expand Down Expand Up @@ -1740,6 +1764,7 @@ string pAllowInSafeMode[] =
"backupwallet",
"keypoolrefill",
"walletpassphrase",
"walletlock",
"validateaddress",
"getwork",
};
Expand Down