core: add some locking around pool use
This commit is contained in:
parent
2c9d9519f1
commit
0263dd2d23
|
@ -2869,6 +2869,8 @@ void Blockchain::return_tx_to_pool(const std::vector<transaction> &txs)
|
||||||
//------------------------------------------------------------------
|
//------------------------------------------------------------------
|
||||||
bool Blockchain::flush_txes_from_pool(const std::list<crypto::hash> &txids)
|
bool Blockchain::flush_txes_from_pool(const std::list<crypto::hash> &txids)
|
||||||
{
|
{
|
||||||
|
CRITICAL_REGION_LOCAL(m_tx_pool);
|
||||||
|
|
||||||
bool res = true;
|
bool res = true;
|
||||||
for (const auto &txid: txids)
|
for (const auto &txid: txids)
|
||||||
{
|
{
|
||||||
|
@ -2877,7 +2879,7 @@ bool Blockchain::flush_txes_from_pool(const std::list<crypto::hash> &txids)
|
||||||
uint64_t fee;
|
uint64_t fee;
|
||||||
bool relayed;
|
bool relayed;
|
||||||
LOG_PRINT_L1("Removing txid " << txid << " from the pool");
|
LOG_PRINT_L1("Removing txid " << txid << " from the pool");
|
||||||
if(!m_tx_pool.take_tx(txid, tx, blob_size, fee, relayed))
|
if(m_tx_pool.have_tx(txid) && !m_tx_pool.take_tx(txid, tx, blob_size, fee, relayed))
|
||||||
{
|
{
|
||||||
LOG_PRINT_L0("Failed to remove txid " << txid << " from the pool");
|
LOG_PRINT_L0("Failed to remove txid " << txid << " from the pool");
|
||||||
res = false;
|
res = false;
|
||||||
|
|
|
@ -662,6 +662,7 @@ namespace cryptonote
|
||||||
//---------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------
|
||||||
size_t tx_memory_pool::validate(uint8_t version)
|
size_t tx_memory_pool::validate(uint8_t version)
|
||||||
{
|
{
|
||||||
|
CRITICAL_REGION_LOCAL(m_transactions_lock);
|
||||||
size_t n_removed = 0;
|
size_t n_removed = 0;
|
||||||
size_t tx_size_limit = (version < 2 ? TRANSACTION_SIZE_LIMIT_V1 : TRANSACTION_SIZE_LIMIT_V2);
|
size_t tx_size_limit = (version < 2 ? TRANSACTION_SIZE_LIMIT_V1 : TRANSACTION_SIZE_LIMIT_V2);
|
||||||
for (auto it = m_transactions.begin(); it != m_transactions.end(); ) {
|
for (auto it = m_transactions.begin(); it != m_transactions.end(); ) {
|
||||||
|
|
Loading…
Reference in New Issue