aboutsummaryrefslogtreecommitdiff
path: root/src/wallet/wallet_rpc_server.cpp
diff options
context:
space:
mode:
authorRiccardo Spagni <ric@spagni.net>2017-11-25 19:53:11 +0200
committerRiccardo Spagni <ric@spagni.net>2017-11-25 19:53:12 +0200
commit4c90d638bc9787596dbb40e4dc6ce4cc3909fa3a (patch)
treeb8f3200e977879f3eedf4ef565584e71ca22719c /src/wallet/wallet_rpc_server.cpp
parentMerge pull request #2822 (diff)
parentAdd out-of-bound exceptions and handle them in RPC (diff)
downloadmonero-4c90d638bc9787596dbb40e4dc6ce4cc3909fa3a.tar.xz
Merge pull request #2823
0d149f70 Add out-of-bound exceptions and handle them in RPC (Michał Sałaban)
Diffstat (limited to 'src/wallet/wallet_rpc_server.cpp')
-rw-r--r--src/wallet/wallet_rpc_server.cpp42
1 files changed, 21 insertions, 21 deletions
diff --git a/src/wallet/wallet_rpc_server.cpp b/src/wallet/wallet_rpc_server.cpp
index fe7f51617..c315684de 100644
--- a/src/wallet/wallet_rpc_server.cpp
+++ b/src/wallet/wallet_rpc_server.cpp
@@ -378,27 +378,23 @@ namespace tools
bool wallet_rpc_server::on_create_address(const wallet_rpc::COMMAND_RPC_CREATE_ADDRESS::request& req, wallet_rpc::COMMAND_RPC_CREATE_ADDRESS::response& res, epee::json_rpc::error& er)
{
if (!m_wallet) return not_open(er);
- m_wallet->add_subaddress(req.account_index, req.label);
- res.address_index = m_wallet->get_num_subaddresses(req.account_index) - 1;
- res.address = m_wallet->get_subaddress_as_str({req.account_index, res.address_index});
+ try
+ {
+ m_wallet->add_subaddress(req.account_index, req.label);
+ res.address_index = m_wallet->get_num_subaddresses(req.account_index) - 1;
+ res.address = m_wallet->get_subaddress_as_str({req.account_index, res.address_index});
+ }
+ catch (const std::exception& e)
+ {
+ handle_rpc_exception(std::current_exception(), er, WALLET_RPC_ERROR_CODE_UNKNOWN_ERROR);
+ return false;
+ }
return true;
}
//------------------------------------------------------------------------------------------------------------------------------
bool wallet_rpc_server::on_label_address(const wallet_rpc::COMMAND_RPC_LABEL_ADDRESS::request& req, wallet_rpc::COMMAND_RPC_LABEL_ADDRESS::response& res, epee::json_rpc::error& er)
{
if (!m_wallet) return not_open(er);
- if (req.index.major >= m_wallet->get_num_subaddress_accounts())
- {
- er.code = WALLET_RPC_ERROR_CODE_ACCOUNT_INDEX_OUTOFBOUND;
- er.message = "Account index is out of bound";
- return false;
- }
- if (req.index.minor >= m_wallet->get_num_subaddresses(req.index.major))
- {
- er.code = WALLET_RPC_ERROR_CODE_ADDRESS_INDEX_OUTOFBOUND;
- er.message = "Address index is out of bound";
- return false;
- }
try
{
m_wallet->set_subaddress_label(req.index, req.label);
@@ -460,12 +456,6 @@ namespace tools
bool wallet_rpc_server::on_label_account(const wallet_rpc::COMMAND_RPC_LABEL_ACCOUNT::request& req, wallet_rpc::COMMAND_RPC_LABEL_ACCOUNT::response& res, epee::json_rpc::error& er)
{
if (!m_wallet) return not_open(er);
- if (req.account_index >= m_wallet->get_num_subaddress_accounts())
- {
- er.code = WALLET_RPC_ERROR_CODE_ACCOUNT_INDEX_OUTOFBOUND;
- er.message = "Account index is out of bound";
- return false;
- }
try
{
m_wallet->set_subaddress_label({req.account_index, 0}, req.label);
@@ -2325,6 +2315,16 @@ namespace tools
er.code = WALLET_RPC_ERROR_CODE_INVALID_PASSWORD;
er.message = "Invalid password.";
}
+ catch (const error::account_index_outofbound& e)
+ {
+ er.code = WALLET_RPC_ERROR_CODE_ACCOUNT_INDEX_OUTOFBOUND;
+ er.message = e.what();
+ }
+ catch (const error::address_index_outofbound& e)
+ {
+ er.code = WALLET_RPC_ERROR_CODE_ADDRESS_INDEX_OUTOFBOUND;
+ er.message = e.what();
+ }
catch (const std::exception& e)
{
er.code = default_error_code;