mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-06-06 21:20:57 +02:00
denialofservices_tests: check txorphanage's AddTx
Rather than checking net_processing's internal implementation of AddOrphanTx, test txorphanage's exported AddTx interface. Note that this means AddToCompactExtraTransactions is no longer tested here.
This commit is contained in:
parent
1041616d7e
commit
26d1a6ccd5
@ -44,9 +44,6 @@ struct CConnmanTest : public CConnman {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
// Tests these internal-to-net_processing.cpp methods:
|
|
||||||
extern bool AddOrphanTx(const CTransactionRef& tx, NodeId peer);
|
|
||||||
|
|
||||||
static CService ip(uint32_t i)
|
static CService ip(uint32_t i)
|
||||||
{
|
{
|
||||||
struct in_addr s;
|
struct in_addr s;
|
||||||
@ -320,6 +317,8 @@ BOOST_AUTO_TEST_CASE(DoS_mapOrphans)
|
|||||||
FillableSigningProvider keystore;
|
FillableSigningProvider keystore;
|
||||||
BOOST_CHECK(keystore.AddKey(key));
|
BOOST_CHECK(keystore.AddKey(key));
|
||||||
|
|
||||||
|
LOCK(g_cs_orphans);
|
||||||
|
|
||||||
// 50 orphan transactions:
|
// 50 orphan transactions:
|
||||||
for (int i = 0; i < 50; i++)
|
for (int i = 0; i < 50; i++)
|
||||||
{
|
{
|
||||||
@ -332,7 +331,7 @@ BOOST_AUTO_TEST_CASE(DoS_mapOrphans)
|
|||||||
tx.vout[0].nValue = 1*CENT;
|
tx.vout[0].nValue = 1*CENT;
|
||||||
tx.vout[0].scriptPubKey = GetScriptForDestination(PKHash(key.GetPubKey()));
|
tx.vout[0].scriptPubKey = GetScriptForDestination(PKHash(key.GetPubKey()));
|
||||||
|
|
||||||
AddOrphanTx(MakeTransactionRef(tx), i);
|
OrphanageAddTx(MakeTransactionRef(tx), i);
|
||||||
}
|
}
|
||||||
|
|
||||||
// ... and 50 that depend on other orphans:
|
// ... and 50 that depend on other orphans:
|
||||||
@ -349,7 +348,7 @@ BOOST_AUTO_TEST_CASE(DoS_mapOrphans)
|
|||||||
tx.vout[0].scriptPubKey = GetScriptForDestination(PKHash(key.GetPubKey()));
|
tx.vout[0].scriptPubKey = GetScriptForDestination(PKHash(key.GetPubKey()));
|
||||||
BOOST_CHECK(SignSignature(keystore, *txPrev, tx, 0, SIGHASH_ALL));
|
BOOST_CHECK(SignSignature(keystore, *txPrev, tx, 0, SIGHASH_ALL));
|
||||||
|
|
||||||
AddOrphanTx(MakeTransactionRef(tx), i);
|
OrphanageAddTx(MakeTransactionRef(tx), i);
|
||||||
}
|
}
|
||||||
|
|
||||||
// This really-big orphan should be ignored:
|
// This really-big orphan should be ignored:
|
||||||
@ -373,10 +372,9 @@ BOOST_AUTO_TEST_CASE(DoS_mapOrphans)
|
|||||||
for (unsigned int j = 1; j < tx.vin.size(); j++)
|
for (unsigned int j = 1; j < tx.vin.size(); j++)
|
||||||
tx.vin[j].scriptSig = tx.vin[0].scriptSig;
|
tx.vin[j].scriptSig = tx.vin[0].scriptSig;
|
||||||
|
|
||||||
BOOST_CHECK(!AddOrphanTx(MakeTransactionRef(tx), i));
|
BOOST_CHECK(!OrphanageAddTx(MakeTransactionRef(tx), i));
|
||||||
}
|
}
|
||||||
|
|
||||||
LOCK2(cs_main, g_cs_orphans);
|
|
||||||
// Test EraseOrphansFor:
|
// Test EraseOrphansFor:
|
||||||
for (NodeId i = 0; i < 3; i++)
|
for (NodeId i = 0; i < 3; i++)
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user