|
|
@ -27,7 +27,11 @@ |
|
|
|
extern bool AddOrphanTx(const CTransaction& tx, NodeId peer); |
|
|
|
extern bool AddOrphanTx(const CTransaction& tx, NodeId peer); |
|
|
|
extern void EraseOrphansFor(NodeId peer); |
|
|
|
extern void EraseOrphansFor(NodeId peer); |
|
|
|
extern unsigned int LimitOrphanTxSize(unsigned int nMaxOrphans); |
|
|
|
extern unsigned int LimitOrphanTxSize(unsigned int nMaxOrphans); |
|
|
|
extern std::map<uint256, CTransaction> mapOrphanTransactions; |
|
|
|
struct COrphanTx { |
|
|
|
|
|
|
|
CTransaction tx; |
|
|
|
|
|
|
|
NodeId fromPeer; |
|
|
|
|
|
|
|
}; |
|
|
|
|
|
|
|
extern std::map<uint256, COrphanTx> mapOrphanTransactions; |
|
|
|
extern std::map<uint256, std::set<uint256> > mapOrphanTransactionsByPrev; |
|
|
|
extern std::map<uint256, std::set<uint256> > mapOrphanTransactionsByPrev; |
|
|
|
|
|
|
|
|
|
|
|
CService ip(uint32_t i) |
|
|
|
CService ip(uint32_t i) |
|
|
@ -149,11 +153,11 @@ BOOST_AUTO_TEST_CASE(DoS_checknbits) |
|
|
|
|
|
|
|
|
|
|
|
CTransaction RandomOrphan() |
|
|
|
CTransaction RandomOrphan() |
|
|
|
{ |
|
|
|
{ |
|
|
|
std::map<uint256, CTransaction>::iterator it; |
|
|
|
std::map<uint256, COrphanTx>::iterator it; |
|
|
|
it = mapOrphanTransactions.lower_bound(GetRandHash()); |
|
|
|
it = mapOrphanTransactions.lower_bound(GetRandHash()); |
|
|
|
if (it == mapOrphanTransactions.end()) |
|
|
|
if (it == mapOrphanTransactions.end()) |
|
|
|
it = mapOrphanTransactions.begin(); |
|
|
|
it = mapOrphanTransactions.begin(); |
|
|
|
return it->second; |
|
|
|
return it->second.tx; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
BOOST_AUTO_TEST_CASE(DoS_mapOrphans) |
|
|
|
BOOST_AUTO_TEST_CASE(DoS_mapOrphans) |
|
|
|