|
|
|
@ -622,7 +622,7 @@ namespace tools
|
|
|
|
|
res.total_unlocked_balance = 0;
|
|
|
|
|
cryptonote::subaddress_index subaddr_index = {0,0};
|
|
|
|
|
const std::pair<std::map<std::string, std::string>, std::vector<std::string>> account_tags = m_wallet->get_account_tags();
|
|
|
|
|
if (!req.tag.empty() && account_tags.first.count(req.tag) == 0)
|
|
|
|
|
if (!req.tag.empty() && account_tags.first.count(req.tag) == 0 && !req.regexp)
|
|
|
|
|
{
|
|
|
|
|
er.code = WALLET_RPC_ERROR_CODE_UNKNOWN_ERROR;
|
|
|
|
|
er.message = (boost::format(tr("Tag %s is unregistered.")) % req.tag).str();
|
|
|
|
@ -630,7 +630,9 @@ namespace tools
|
|
|
|
|
}
|
|
|
|
|
for (; subaddr_index.major < m_wallet->get_num_subaddress_accounts(); ++subaddr_index.major)
|
|
|
|
|
{
|
|
|
|
|
if (!req.tag.empty() && req.tag != account_tags.second[subaddr_index.major])
|
|
|
|
|
bool no_match = !req.regexp ? (!req.tag.empty() && req.tag != account_tags.second[subaddr_index.major])
|
|
|
|
|
: (!req.tag.empty() && !boost::regex_match(account_tags.second[subaddr_index.major], boost::regex(req.tag)));
|
|
|
|
|
if (no_match)
|
|
|
|
|
continue;
|
|
|
|
|
wallet_rpc::COMMAND_RPC_GET_ACCOUNTS::subaddress_account_info info;
|
|
|
|
|
info.account_index = subaddr_index.major;
|
|
|
|
@ -643,6 +645,12 @@ namespace tools
|
|
|
|
|
res.total_balance += info.balance;
|
|
|
|
|
res.total_unlocked_balance += info.unlocked_balance;
|
|
|
|
|
}
|
|
|
|
|
if (res.subaddress_accounts.size() == 0 && req.regexp)
|
|
|
|
|
{
|
|
|
|
|
er.code = WALLET_RPC_ERROR_CODE_UNKNOWN_ERROR;
|
|
|
|
|
er.message = (boost::format(tr("No matches for regex filter %s .")) % req.tag).str();
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
catch (const std::exception& e)
|
|
|
|
|
{
|
|
|
|
|