mirror of
https://github.com/monero-project/monero.git
synced 2024-12-27 08:49:27 -05:00
wallet2: fix duplicate tx notifications for pool txes
This commit is contained in:
parent
094b0c4d00
commit
2112060d03
@ -610,7 +610,7 @@ std::string strjoin(const std::vector<size_t> &V, const char *sep)
|
|||||||
return ss.str();
|
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)
|
const crypto::hash &key, const tools::wallet2::pool_payment_details &pd)
|
||||||
{
|
{
|
||||||
auto range = container.equal_range(key);
|
auto range = container.equal_range(key);
|
||||||
@ -619,10 +619,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)
|
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;
|
i->second = pd;
|
||||||
return;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
container.emplace(key, pd);
|
container.emplace(key, pd);
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void drop_from_short_history(std::list<crypto::hash> &short_chain_history, size_t N)
|
void drop_from_short_history(std::list<crypto::hash> &short_chain_history, size_t N)
|
||||||
@ -1939,6 +1940,7 @@ void wallet2::process_new_transaction(const crypto::hash &txid, const cryptonote
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool all_same = true;
|
||||||
for (const auto& i : tx_money_got_in_outs)
|
for (const auto& i : tx_money_got_in_outs)
|
||||||
{
|
{
|
||||||
payment_details payment;
|
payment_details payment;
|
||||||
@ -1951,7 +1953,8 @@ void wallet2::process_new_transaction(const crypto::hash &txid, const cryptonote
|
|||||||
payment.m_coinbase = miner_tx;
|
payment.m_coinbase = miner_tx;
|
||||||
payment.m_subaddr_index = i.first;
|
payment.m_subaddr_index = i.first;
|
||||||
if (pool) {
|
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)
|
if (0 != m_callback)
|
||||||
m_callback->on_unconfirmed_money_received(height, txid, tx, payment.m_amount, payment.m_subaddr_index);
|
m_callback->on_unconfirmed_money_received(height, txid, tx, payment.m_amount, payment.m_subaddr_index);
|
||||||
}
|
}
|
||||||
@ -1959,6 +1962,10 @@ void wallet2::process_new_transaction(const crypto::hash &txid, const cryptonote
|
|||||||
m_payments.emplace(payment_id, payment);
|
m_payments.emplace(payment_id, payment);
|
||||||
LOG_PRINT_L2("Payment found in " << (pool ? "pool" : "block") << ": " << payment_id << " / " << payment.m_tx_hash << " / " << payment.m_amount);
|
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)
|
if (notify)
|
||||||
|
Loading…
Reference in New Issue
Block a user