aboutsummaryrefslogtreecommitdiff
path: root/src/bitcoinrpc.cpp
diff options
context:
space:
mode:
authorPieter Wuille <pieter.wuille@gmail.com>2012-05-19 08:34:27 -0700
committerPieter Wuille <pieter.wuille@gmail.com>2012-05-19 08:34:27 -0700
commitbd795bd5436841c759fc5a9c900f68852bba0e6c (patch)
tree52ad137c6326cdaa59c36d1066972315319233b4 /src/bitcoinrpc.cpp
parent973ca019bce58fab7a100b08381050ad2c5eb3ef (diff)
parent29875dcb4bc2a1da39caa2cda8735aae391c8c5d (diff)
downloadbitcoin-bd795bd5436841c759fc5a9c900f68852bba0e6c.tar.xz
Merge pull request #1358 from luke-jr/shared_lockchk
Shared code for wallet lock help and check
Diffstat (limited to 'src/bitcoinrpc.cpp')
-rw-r--r--src/bitcoinrpc.cpp66
1 files changed, 31 insertions, 35 deletions
diff --git a/src/bitcoinrpc.cpp b/src/bitcoinrpc.cpp
index c1c58ce935..334425a9a9 100644
--- a/src/bitcoinrpc.cpp
+++ b/src/bitcoinrpc.cpp
@@ -115,6 +115,21 @@ HexBits(unsigned int nBits)
return HexStr(BEGIN(uBits.cBits), END(uBits.cBits));
}
+static std::string
+HelpRequiringPassphrase()
+{
+ return pwalletMain->IsCrypted()
+ ? "\nrequires wallet passphrase to be set with walletpassphrase first"
+ : "";
+}
+
+static inline void
+EnsureWalletIsUnlocked()
+{
+ if (pwalletMain->IsLocked())
+ throw JSONRPCError(-13, "Error: Please enter the wallet passphrase with walletpassphrase first.");
+}
+
enum DecomposeMode {
DM_NONE = 0,
DM_HASH,
@@ -731,15 +746,11 @@ Value settxfee(const Array& params, bool fHelp)
Value sendtoaddress(const Array& params, bool fHelp)
{
- if (pwalletMain->IsCrypted() && (fHelp || params.size() < 2 || params.size() > 4))
- throw runtime_error(
- "sendtoaddress <bitcoinaddress> <amount> [comment] [comment-to]\n"
- "<amount> is a real and is rounded to the nearest 0.00000001\n"
- "requires wallet passphrase to be set with walletpassphrase first");
- if (!pwalletMain->IsCrypted() && (fHelp || params.size() < 2 || params.size() > 4))
+ if (fHelp || params.size() < 2 || params.size() > 4)
throw runtime_error(
"sendtoaddress <bitcoinaddress> <amount> [comment] [comment-to]\n"
- "<amount> is a real and is rounded to the nearest 0.00000001");
+ "<amount> is a real and is rounded to the nearest 0.00000001"
+ + HelpRequiringPassphrase());
CBitcoinAddress address(params[0].get_str());
if (!address.IsValid())
@@ -772,8 +783,7 @@ Value signmessage(const Array& params, bool fHelp)
"signmessage <bitcoinaddress> <message>\n"
"Sign a message with the private key of an address");
- if (pwalletMain->IsLocked())
- throw JSONRPCError(-13, "Error: Please enter the wallet passphrase with walletpassphrase first.");
+ EnsureWalletIsUnlocked();
string strAddress = params[0].get_str();
string strMessage = params[1].get_str();
@@ -1054,15 +1064,11 @@ Value movecmd(const Array& params, bool fHelp)
Value sendfrom(const Array& params, bool fHelp)
{
- if (pwalletMain->IsCrypted() && (fHelp || params.size() < 3 || params.size() > 6))
+ if (fHelp || params.size() < 3 || params.size() > 6)
throw runtime_error(
"sendfrom <fromaccount> <tobitcoinaddress> <amount> [minconf=1] [comment] [comment-to]\n"
- "<amount> is a real and is rounded to the nearest 0.00000001\n"
- "requires wallet passphrase to be set with walletpassphrase first");
- if (!pwalletMain->IsCrypted() && (fHelp || params.size() < 3 || params.size() > 6))
- throw runtime_error(
- "sendfrom <fromaccount> <tobitcoinaddress> <amount> [minconf=1] [comment] [comment-to]\n"
- "<amount> is a real and is rounded to the nearest 0.00000001");
+ "<amount> is a real and is rounded to the nearest 0.00000001"
+ + HelpRequiringPassphrase());
string strAccount = AccountFromValue(params[0]);
CBitcoinAddress address(params[1].get_str());
@@ -1080,8 +1086,7 @@ Value sendfrom(const Array& params, bool fHelp)
if (params.size() > 5 && params[5].type() != null_type && !params[5].get_str().empty())
wtx.mapValue["to"] = params[5].get_str();
- if (pwalletMain->IsLocked())
- throw JSONRPCError(-13, "Error: Please enter the wallet passphrase with walletpassphrase first.");
+ EnsureWalletIsUnlocked();
// Check funds
int64 nBalance = GetAccountBalance(strAccount, nMinDepth);
@@ -1099,15 +1104,11 @@ Value sendfrom(const Array& params, bool fHelp)
Value sendmany(const Array& params, bool fHelp)
{
- if (pwalletMain->IsCrypted() && (fHelp || params.size() < 2 || params.size() > 4))
- throw runtime_error(
- "sendmany <fromaccount> {address:amount,...} [minconf=1] [comment]\n"
- "amounts are double-precision floating point numbers\n"
- "requires wallet passphrase to be set with walletpassphrase first");
- if (!pwalletMain->IsCrypted() && (fHelp || params.size() < 2 || params.size() > 4))
+ if (fHelp || params.size() < 2 || params.size() > 4)
throw runtime_error(
"sendmany <fromaccount> {address:amount,...} [minconf=1] [comment]\n"
- "amounts are double-precision floating point numbers");
+ "amounts are double-precision floating point numbers"
+ + HelpRequiringPassphrase());
string strAccount = AccountFromValue(params[0]);
Object sendTo = params[1].get_obj();
@@ -1142,8 +1143,7 @@ Value sendmany(const Array& params, bool fHelp)
vecSend.push_back(make_pair(scriptPubKey, nAmount));
}
- if (pwalletMain->IsLocked())
- throw JSONRPCError(-13, "Error: Please enter the wallet passphrase with walletpassphrase first.");
+ EnsureWalletIsUnlocked();
// Check funds
int64 nBalance = GetAccountBalance(strAccount, nMinDepth);
@@ -1742,17 +1742,13 @@ Value backupwallet(const Array& params, bool fHelp)
Value keypoolrefill(const Array& params, bool fHelp)
{
- if (pwalletMain->IsCrypted() && (fHelp || params.size() > 0))
- throw runtime_error(
- "keypoolrefill\n"
- "Fills the keypool, requires wallet passphrase to be set.");
- if (!pwalletMain->IsCrypted() && (fHelp || params.size() > 0))
+ if (fHelp || params.size() > 0)
throw runtime_error(
"keypoolrefill\n"
- "Fills the keypool.");
+ "Fills the keypool."
+ + HelpRequiringPassphrase());
- if (pwalletMain->IsLocked())
- throw JSONRPCError(-13, "Error: Please enter the wallet passphrase with walletpassphrase first.");
+ EnsureWalletIsUnlocked();
pwalletMain->TopUpKeyPool();