From 7712509644c336835c2ccb51d18ffd76a909bb5b Mon Sep 17 00:00:00 2001 From: stoffu Date: Wed, 31 Jan 2018 17:52:14 +0900 Subject: [PATCH 1/2] wallet-rpc: rename *_INDEX_OUTOFBOUND into *_INDEX_OUT_OF_BOUNDS --- src/wallet/wallet_rpc_server.cpp | 4 ++-- src/wallet/wallet_rpc_server_error_codes.h | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/wallet/wallet_rpc_server.cpp b/src/wallet/wallet_rpc_server.cpp index 97faf0b56..eb18d5091 100644 --- a/src/wallet/wallet_rpc_server.cpp +++ b/src/wallet/wallet_rpc_server.cpp @@ -2439,12 +2439,12 @@ namespace tools } catch (const error::account_index_outofbound& e) { - er.code = WALLET_RPC_ERROR_CODE_ACCOUNT_INDEX_OUTOFBOUND; + er.code = WALLET_RPC_ERROR_CODE_ACCOUNT_INDEX_OUT_OF_BOUNDS; er.message = e.what(); } catch (const error::address_index_outofbound& e) { - er.code = WALLET_RPC_ERROR_CODE_ADDRESS_INDEX_OUTOFBOUND; + er.code = WALLET_RPC_ERROR_CODE_ADDRESS_INDEX_OUT_OF_BOUNDS; er.message = e.what(); } catch (const std::exception& e) diff --git a/src/wallet/wallet_rpc_server_error_codes.h b/src/wallet/wallet_rpc_server_error_codes.h index 311556657..07249a41b 100644 --- a/src/wallet/wallet_rpc_server_error_codes.h +++ b/src/wallet/wallet_rpc_server_error_codes.h @@ -44,8 +44,8 @@ #define WALLET_RPC_ERROR_CODE_WRONG_URI -11 #define WALLET_RPC_ERROR_CODE_WRONG_INDEX -12 #define WALLET_RPC_ERROR_CODE_NOT_OPEN -13 -#define WALLET_RPC_ERROR_CODE_ACCOUNT_INDEX_OUTOFBOUND -14 -#define WALLET_RPC_ERROR_CODE_ADDRESS_INDEX_OUTOFBOUND -15 +#define WALLET_RPC_ERROR_CODE_ACCOUNT_INDEX_OUT_OF_BOUNDS -14 +#define WALLET_RPC_ERROR_CODE_ADDRESS_INDEX_OUT_OF_BOUNDS -15 #define WALLET_RPC_ERROR_CODE_TX_NOT_POSSIBLE -16 #define WALLET_RPC_ERROR_CODE_NOT_ENOUGH_MONEY -17 #define WALLET_RPC_ERROR_CODE_TX_TOO_LARGE -18 From a99ef176952defea20f4c9456bc489f46c7ea830 Mon Sep 17 00:00:00 2001 From: stoffu Date: Tue, 30 Jan 2018 19:55:39 +0900 Subject: [PATCH 2/2] wallet-rpc: take subaddress account as arg for get_transfer_by_txid --- src/wallet/wallet_rpc_server.cpp | 15 +++++++++++---- src/wallet/wallet_rpc_server_commands_defs.h | 2 ++ 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/src/wallet/wallet_rpc_server.cpp b/src/wallet/wallet_rpc_server.cpp index eb18d5091..6ec249fc4 100644 --- a/src/wallet/wallet_rpc_server.cpp +++ b/src/wallet/wallet_rpc_server.cpp @@ -1889,8 +1889,15 @@ namespace tools return false; } + if (req.account_index >= m_wallet->get_num_subaddress_accounts()) + { + er.code = WALLET_RPC_ERROR_CODE_ACCOUNT_INDEX_OUT_OF_BOUNDS; + er.message = "Account index is out of bound"; + return false; + } + std::list> payments; - m_wallet->get_payments(payments, 0); + m_wallet->get_payments(payments, 0, (uint64_t)-1, req.account_index); for (std::list>::const_iterator i = payments.begin(); i != payments.end(); ++i) { if (i->second.m_tx_hash == txid) { @@ -1900,7 +1907,7 @@ namespace tools } std::list> payments_out; - m_wallet->get_payments_out(payments_out, 0); + m_wallet->get_payments_out(payments_out, 0, (uint64_t)-1, req.account_index); for (std::list>::const_iterator i = payments_out.begin(); i != payments_out.end(); ++i) { if (i->first == txid) { @@ -1910,7 +1917,7 @@ namespace tools } std::list> upayments; - m_wallet->get_unconfirmed_payments_out(upayments); + m_wallet->get_unconfirmed_payments_out(upayments, req.account_index); for (std::list>::const_iterator i = upayments.begin(); i != upayments.end(); ++i) { if (i->first == txid) { @@ -1922,7 +1929,7 @@ namespace tools m_wallet->update_pool_state(); std::list> pool_payments; - m_wallet->get_unconfirmed_payments(pool_payments); + m_wallet->get_unconfirmed_payments(pool_payments, req.account_index); for (std::list>::const_iterator i = pool_payments.begin(); i != pool_payments.end(); ++i) { if (i->second.m_pd.m_tx_hash == txid) { diff --git a/src/wallet/wallet_rpc_server_commands_defs.h b/src/wallet/wallet_rpc_server_commands_defs.h index e9f112b63..82b6b78f9 100644 --- a/src/wallet/wallet_rpc_server_commands_defs.h +++ b/src/wallet/wallet_rpc_server_commands_defs.h @@ -1291,9 +1291,11 @@ namespace wallet_rpc struct request { std::string txid; + uint32_t account_index; BEGIN_KV_SERIALIZE_MAP() KV_SERIALIZE(txid); + KV_SERIALIZE_OPT(account_index, (uint32_t)0) END_KV_SERIALIZE_MAP() };