diff --git a/src/wallet/wallet2.cpp b/src/wallet/wallet2.cpp index 12f90d4d..edba7e67 100644 --- a/src/wallet/wallet2.cpp +++ b/src/wallet/wallet2.cpp @@ -3810,16 +3810,10 @@ bool enum_container(iterator_t it_begin, iterator_t it_end, callback_t cb) //---------------------------------------------------------------------------------------------------- bool wallet2::is_defragmentation_transaction(const wallet_public::wallet_transfer_info& wti) { - if (wti.employed_entries.receive.size() && wti.employed_entries.spent.size()) + if (wti.employed_entries.receive.size() && wti.employed_entries.spent.size() && wti.subtransfers.size() == 1) { - for (const auto& st : wti.subtransfers) - { - if (st.asset_id == currency::native_coin_asset_id) - { - if (!st.is_income && st.amount == get_tx_fee(wti.tx)) - return true; - } - } + if (wti.subtransfers[0].asset_id == currency::native_coin_asset_id && !wti.subtransfers[0].is_income && wti.subtransfers[0].amount == get_tx_fee(wti.tx)) + return true; } return false; } diff --git a/src/wallet/wallet_rpc_server.cpp b/src/wallet/wallet_rpc_server.cpp index 4219d50d..223cd8ae 100644 --- a/src/wallet/wallet_rpc_server.cpp +++ b/src/wallet/wallet_rpc_server.cpp @@ -28,6 +28,12 @@ using namespace epee; er.message = e.what(); \ return false; \ } \ + catch (const tools::error::not_enough_money& e) \ + { \ + er.code = WALLET_RPC_ERROR_CODE_GENERIC_TRANSFER_ERROR; \ + er.message = e.error_code(); \ + return false; \ + } \ catch (const tools::error::wallet_error& e) \ { \ er.code = WALLET_RPC_ERROR_CODE_GENERIC_TRANSFER_ERROR; \