mirror of
https://github.com/bitcoin/bitcoin.git
synced 2026-06-03 17:54:19 +02:00
Move all g_cs_orphans locking to txorphanage
This commit is contained in:
@@ -85,12 +85,10 @@ FUZZ_TARGET_INIT(txorphan, initialize_orphanage)
|
||||
CallOneOf(
|
||||
fuzzed_data_provider,
|
||||
[&] {
|
||||
LOCK(g_cs_orphans);
|
||||
orphanage.AddChildrenToWorkSet(*tx, peer_id);
|
||||
},
|
||||
[&] {
|
||||
{
|
||||
LOCK(g_cs_orphans);
|
||||
NodeId originator;
|
||||
bool more = true;
|
||||
CTransactionRef ref = orphanage.GetTxToReconsider(peer_id, originator, more);
|
||||
@@ -107,14 +105,12 @@ FUZZ_TARGET_INIT(txorphan, initialize_orphanage)
|
||||
// AddTx should return false if tx is too big or already have it
|
||||
// tx weight is unknown, we only check when tx is already in orphanage
|
||||
{
|
||||
LOCK(g_cs_orphans);
|
||||
bool add_tx = orphanage.AddTx(tx, peer_id);
|
||||
// have_tx == true -> add_tx == false
|
||||
Assert(!have_tx || !add_tx);
|
||||
}
|
||||
have_tx = orphanage.HaveTx(GenTxid::Txid(tx->GetHash())) || orphanage.HaveTx(GenTxid::Wtxid(tx->GetHash()));
|
||||
{
|
||||
LOCK(g_cs_orphans);
|
||||
bool add_tx = orphanage.AddTx(tx, peer_id);
|
||||
// if have_tx is still false, it must be too big
|
||||
Assert(!have_tx == (GetTransactionWeight(*tx) > MAX_STANDARD_TX_WEIGHT));
|
||||
@@ -125,25 +121,22 @@ FUZZ_TARGET_INIT(txorphan, initialize_orphanage)
|
||||
bool have_tx = orphanage.HaveTx(GenTxid::Txid(tx->GetHash())) || orphanage.HaveTx(GenTxid::Wtxid(tx->GetHash()));
|
||||
// EraseTx should return 0 if m_orphans doesn't have the tx
|
||||
{
|
||||
LOCK(g_cs_orphans);
|
||||
Assert(have_tx == orphanage.EraseTx(tx->GetHash()));
|
||||
}
|
||||
have_tx = orphanage.HaveTx(GenTxid::Txid(tx->GetHash())) || orphanage.HaveTx(GenTxid::Wtxid(tx->GetHash()));
|
||||
// have_tx should be false and EraseTx should fail
|
||||
{
|
||||
LOCK(g_cs_orphans);
|
||||
Assert(!have_tx && !orphanage.EraseTx(tx->GetHash()));
|
||||
}
|
||||
},
|
||||
[&] {
|
||||
LOCK(g_cs_orphans);
|
||||
orphanage.EraseForPeer(peer_id);
|
||||
},
|
||||
[&] {
|
||||
// test mocktime and expiry
|
||||
SetMockTime(ConsumeTime(fuzzed_data_provider));
|
||||
auto limit = fuzzed_data_provider.ConsumeIntegral<unsigned int>();
|
||||
WITH_LOCK(g_cs_orphans, orphanage.LimitOrphans(limit));
|
||||
orphanage.LimitOrphans(limit);
|
||||
Assert(orphanage.Size() <= limit);
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user