tx_pool: fix infinite loop when failing to find a meta record

This commit is contained in:
moneromooo-monero 2018-08-17 17:24:24 +00:00
parent b780cf4db1
commit 48a7bc4280
No known key found for this signature in database
GPG Key ID: 686F07454D6CEFC3

View File

@ -1140,7 +1140,7 @@ namespace cryptonote
LockedTXN lock(m_blockchain); LockedTXN lock(m_blockchain);
auto sorted_it = m_txs_by_fee_and_receive_time.begin(); auto sorted_it = m_txs_by_fee_and_receive_time.begin();
while (sorted_it != m_txs_by_fee_and_receive_time.end()) for (; sorted_it != m_txs_by_fee_and_receive_time.end(); ++sorted_it)
{ {
txpool_tx_meta_t meta; txpool_tx_meta_t meta;
if (!m_blockchain.get_txpool_tx_meta(sorted_it->second, meta)) if (!m_blockchain.get_txpool_tx_meta(sorted_it->second, meta))
@ -1154,7 +1154,6 @@ namespace cryptonote
if (max_total_size < total_size + meta.blob_size) if (max_total_size < total_size + meta.blob_size)
{ {
LOG_PRINT_L2(" would exceed maximum block size"); LOG_PRINT_L2(" would exceed maximum block size");
sorted_it++;
continue; continue;
} }
@ -1167,14 +1166,12 @@ namespace cryptonote
if(!get_block_reward(median_size, total_size + meta.blob_size, already_generated_coins, block_reward, version)) if(!get_block_reward(median_size, total_size + meta.blob_size, already_generated_coins, block_reward, version))
{ {
LOG_PRINT_L2(" would exceed maximum block size"); LOG_PRINT_L2(" would exceed maximum block size");
sorted_it++;
continue; continue;
} }
coinbase = block_reward + fee + meta.fee; coinbase = block_reward + fee + meta.fee;
if (coinbase < template_accept_threshold(best_coinbase)) if (coinbase < template_accept_threshold(best_coinbase))
{ {
LOG_PRINT_L2(" would decrease coinbase to " << print_money(coinbase)); LOG_PRINT_L2(" would decrease coinbase to " << print_money(coinbase));
sorted_it++;
continue; continue;
} }
} }
@ -1221,13 +1218,11 @@ namespace cryptonote
if (!ready) if (!ready)
{ {
LOG_PRINT_L2(" not ready to go"); LOG_PRINT_L2(" not ready to go");
sorted_it++;
continue; continue;
} }
if (have_key_images(k_images, tx)) if (have_key_images(k_images, tx))
{ {
LOG_PRINT_L2(" key images already seen"); LOG_PRINT_L2(" key images already seen");
sorted_it++;
continue; continue;
} }
@ -1236,7 +1231,6 @@ namespace cryptonote
fee += meta.fee; fee += meta.fee;
best_coinbase = coinbase; best_coinbase = coinbase;
append_key_images(k_images, tx); append_key_images(k_images, tx);
sorted_it++;
LOG_PRINT_L2(" added, new block size " << total_size << "/" << max_total_size << ", coinbase " << print_money(best_coinbase)); LOG_PRINT_L2(" added, new block size " << total_size << "/" << max_total_size << ", coinbase " << print_money(best_coinbase));
} }