diff options
Diffstat (limited to 'src/wallet')
-rw-r--r-- | src/wallet/api/subaddress_account.cpp | 2 | ||||
-rw-r--r-- | src/wallet/wallet2.cpp | 15 |
2 files changed, 12 insertions, 5 deletions
diff --git a/src/wallet/api/subaddress_account.cpp b/src/wallet/api/subaddress_account.cpp index 19ed8fb38..4765465c3 100644 --- a/src/wallet/api/subaddress_account.cpp +++ b/src/wallet/api/subaddress_account.cpp @@ -62,7 +62,7 @@ void SubaddressAccountImpl::refresh() { m_rows.push_back(new SubaddressAccountRow( i, - m_wallet->m_wallet->get_subaddress_as_str({i,0}).substr(0,6), + m_wallet->m_wallet->get_subaddress_as_str({i,0}), m_wallet->m_wallet->get_subaddress_label({i,0}), cryptonote::print_money(m_wallet->m_wallet->balance(i)), cryptonote::print_money(m_wallet->m_wallet->unlocked_balance(i)) diff --git a/src/wallet/wallet2.cpp b/src/wallet/wallet2.cpp index a8fe9c7cb..c02d10ab4 100644 --- a/src/wallet/wallet2.cpp +++ b/src/wallet/wallet2.cpp @@ -628,7 +628,7 @@ std::string strjoin(const std::vector<size_t> &V, const char *sep) return ss.str(); } -static void emplace_or_replace(std::unordered_multimap<crypto::hash, tools::wallet2::pool_payment_details> &container, +static bool emplace_or_replace(std::unordered_multimap<crypto::hash, tools::wallet2::pool_payment_details> &container, const crypto::hash &key, const tools::wallet2::pool_payment_details &pd) { auto range = container.equal_range(key); @@ -637,10 +637,11 @@ static void emplace_or_replace(std::unordered_multimap<crypto::hash, tools::wall if (i->second.m_pd.m_tx_hash == pd.m_pd.m_tx_hash && i->second.m_pd.m_subaddr_index == pd.m_pd.m_subaddr_index) { i->second = pd; - return; + return false; } } container.emplace(key, pd); + return true; } void drop_from_short_history(std::list<crypto::hash> &short_chain_history, size_t N) @@ -2015,6 +2016,7 @@ void wallet2::process_new_transaction(const crypto::hash &txid, const cryptonote return; } + bool all_same = true; for (const auto& i : tx_money_got_in_outs) { payment_details payment; @@ -2027,7 +2029,8 @@ void wallet2::process_new_transaction(const crypto::hash &txid, const cryptonote payment.m_coinbase = miner_tx; payment.m_subaddr_index = i.first; if (pool) { - emplace_or_replace(m_unconfirmed_payments, payment_id, pool_payment_details{payment, double_spend_seen}); + if (emplace_or_replace(m_unconfirmed_payments, payment_id, pool_payment_details{payment, double_spend_seen})) + all_same = false; if (0 != m_callback) m_callback->on_unconfirmed_money_received(height, txid, tx, payment.m_amount, payment.m_subaddr_index); } @@ -2035,13 +2038,17 @@ void wallet2::process_new_transaction(const crypto::hash &txid, const cryptonote m_payments.emplace(payment_id, payment); LOG_PRINT_L2("Payment found in " << (pool ? "pool" : "block") << ": " << payment_id << " / " << payment.m_tx_hash << " / " << payment.m_amount); } + + // if it's a pool tx and we already had it, don't notify again + if (pool && all_same) + notify = false; } if (notify) { std::shared_ptr<tools::Notify> tx_notify = m_tx_notify; if (tx_notify) - tx_notify->notify(epee::string_tools::pod_to_hex(txid).c_str()); + tx_notify->notify("%s", epee::string_tools::pod_to_hex(txid).c_str(), NULL); } } //---------------------------------------------------------------------------------------------------- |