@ -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 )
{