|
|
|
@ -550,9 +550,29 @@ namespace tools
|
|
|
|
|
if (!m_wallet) return not_open(er);
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
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);
|
|
|
|
|
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});
|
|
|
|
|
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)
|
|
|
|
|
{
|
|
|
|
|