diff options
author | Alexander Blair <snipa@jagtech.io> | 2020-01-16 17:51:24 -0800 |
---|---|---|
committer | Alexander Blair <snipa@jagtech.io> | 2020-01-16 17:51:25 -0800 |
commit | beb815a81defc441138bb6929c3b525e008fe734 (patch) | |
tree | fb289c81a7be0fc91023d12a9c1531981dcc9626 /src/wallet/wallet_rpc_server.cpp | |
parent | Merge pull request #6143 (diff) | |
parent | wallet_rpc_server: add count parameter to create_address (diff) | |
download | monero-beb815a81defc441138bb6929c3b525e008fe734.tar.xz |
Merge pull request #6144
0e0351c4 wallet_rpc_server: add count parameter to create_address (Matt Smith)
Diffstat (limited to 'src/wallet/wallet_rpc_server.cpp')
-rw-r--r-- | src/wallet/wallet_rpc_server.cpp | 26 |
1 files changed, 23 insertions, 3 deletions
diff --git a/src/wallet/wallet_rpc_server.cpp b/src/wallet/wallet_rpc_server.cpp index e7875021f..eb89a96e9 100644 --- a/src/wallet/wallet_rpc_server.cpp +++ b/src/wallet/wallet_rpc_server.cpp @@ -550,9 +550,29 @@ namespace tools if (!m_wallet) return not_open(er); 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}); + if (req.count < 1 || req.count > 64) { + er.code = WALLET_RPC_ERROR_CODE_UNKNOWN_ERROR; + er.message = "Count must be between 1 and 64."; + return false; + } + + std::vector<std::string> addresses; + std::vector<uint32_t> address_indices; + + addresses.reserve(req.count); + address_indices.reserve(req.count); + + for (uint32_t i = 0; i < req.count; i++) { + m_wallet->add_subaddress(req.account_index, req.label); + uint32_t new_address_index = m_wallet->get_num_subaddresses(req.account_index) - 1; + address_indices.push_back(new_address_index); + addresses.push_back(m_wallet->get_subaddress_as_str({req.account_index, new_address_index})); + } + + res.address = addresses[0]; + res.address_index = address_indices[0]; + res.addresses = addresses; + res.address_indices = address_indices; } catch (const std::exception& e) { |