tx_pool: remove transactions if they're in the blockchain

When starting up, if the pool state was not saved, the pool
might contain transactions which made it into the blockchain,
so these need removing
pull/95/head
moneromooo-monero 7 years ago
parent 558cfc31ca
commit aaeb164cf6
No known key found for this signature in database
GPG Key ID: 686F07454D6CEFC3

@ -717,8 +717,16 @@ namespace cryptonote
size_t n_removed = 0;
size_t tx_size_limit = get_transaction_size_limit(version);
for (auto it = m_transactions.begin(); it != m_transactions.end(); ) {
bool remove = false;
if (it->second.blob_size >= tx_size_limit) {
LOG_PRINT_L1("Transaction " << get_transaction_hash(it->second.tx) << " is too big (" << it->second.blob_size << " bytes), removing it from pool");
LOG_PRINT_L1("Transaction " << it->first << " is too big (" << it->second.blob_size << " bytes), removing it from pool");
remove = true;
}
else if (m_blockchain.have_tx(it->first)) {
LOG_PRINT_L1("Transaction " << it->first << " is in the blockchain, removing it from pool");
remove = true;
}
if (remove) {
remove_transaction_keyimages(it->second.tx);
auto sorted_it = find_tx_in_sorted_container(it->first);
if (sorted_it == m_txs_by_fee_and_receive_time.end())

Loading…
Cancel
Save