mirror of
https://github.com/ElementsProject/elements.git
synced 2026-08-16 13:01:19 +02:00
Merge #20217: net: Remove g_relay_txes
34e33ab859Remove g_relay_txes (John Newbery)68334b3944[net processing] Add m_ignores_incoming_txs to PeerManager and use internally (John Newbery)4d510aa055[init] Use MakeUnique<> to construct peerman (John Newbery)f3f61d0eb9[net processing] Add IgnoresIncomingTxs() function to PeerManager (John Newbery)5805b8299f[net processing] Move PushNodeVersion into PeerManager (John Newbery) Pull request description: `g_relay_txes` is only required inside net_processing and is set only once at startup. Instead of having a global, move it to be a const member of PeerManager. This requires moving `PushNodeVersion()` into `PeerManager`, which also allows us to remove the `connman` argument. ACKs for top commit: narula: utACK34e33ab859MarcoFalke: re-ACK34e33ab85💐 Tree-SHA512: 33f75b522e5f34b243731932eb96cd6c8ce9db69b5186395e3718858bc715cec1711a663c6afc5880462812cbc15040930e2dc648b2acad6bc6502ad1397c5e3
This commit is contained in:
commit
f5b2ea3e59
8 changed files with 66 additions and 47 deletions
|
|
@ -1373,10 +1373,9 @@ bool AppInitMain(const util::Ref& context, NodeContext& node, interfaces::BlockA
|
||||||
// is not yet setup and may end up being set up twice if we
|
// is not yet setup and may end up being set up twice if we
|
||||||
// need to reindex later.
|
// need to reindex later.
|
||||||
|
|
||||||
// see Step 2: parameter interactions for more information about these
|
|
||||||
fListen = args.GetBoolArg("-listen", DEFAULT_LISTEN);
|
fListen = args.GetBoolArg("-listen", DEFAULT_LISTEN);
|
||||||
fDiscover = args.GetBoolArg("-discover", true);
|
fDiscover = args.GetBoolArg("-discover", true);
|
||||||
g_relay_txes = !args.GetBoolArg("-blocksonly", DEFAULT_BLOCKSONLY);
|
const bool ignores_incoming_txs{args.GetBoolArg("-blocksonly", DEFAULT_BLOCKSONLY)};
|
||||||
|
|
||||||
assert(!node.banman);
|
assert(!node.banman);
|
||||||
node.banman = MakeUnique<BanMan>(GetDataDir() / "banlist.dat", &uiInterface, args.GetArg("-bantime", DEFAULT_MISBEHAVING_BANTIME));
|
node.banman = MakeUnique<BanMan>(GetDataDir() / "banlist.dat", &uiInterface, args.GetArg("-bantime", DEFAULT_MISBEHAVING_BANTIME));
|
||||||
|
|
@ -1386,7 +1385,7 @@ bool AppInitMain(const util::Ref& context, NodeContext& node, interfaces::BlockA
|
||||||
assert(!node.fee_estimator);
|
assert(!node.fee_estimator);
|
||||||
// Don't initialize fee estimation with old data if we don't relay transactions,
|
// Don't initialize fee estimation with old data if we don't relay transactions,
|
||||||
// as they would never get updated.
|
// as they would never get updated.
|
||||||
if (g_relay_txes) node.fee_estimator = std::make_unique<CBlockPolicyEstimator>();
|
if (!ignores_incoming_txs) node.fee_estimator = std::make_unique<CBlockPolicyEstimator>();
|
||||||
|
|
||||||
assert(!node.mempool);
|
assert(!node.mempool);
|
||||||
int check_ratio = std::min<int>(std::max<int>(args.GetArg("-checkmempool", chainparams.DefaultConsistencyChecks() ? 1 : 0), 0), 1000000);
|
int check_ratio = std::min<int>(std::max<int>(args.GetArg("-checkmempool", chainparams.DefaultConsistencyChecks() ? 1 : 0), 0), 1000000);
|
||||||
|
|
@ -1396,7 +1395,9 @@ bool AppInitMain(const util::Ref& context, NodeContext& node, interfaces::BlockA
|
||||||
node.chainman = &g_chainman;
|
node.chainman = &g_chainman;
|
||||||
ChainstateManager& chainman = *Assert(node.chainman);
|
ChainstateManager& chainman = *Assert(node.chainman);
|
||||||
|
|
||||||
node.peerman.reset(new PeerManager(chainparams, *node.connman, node.banman.get(), *node.scheduler, chainman, *node.mempool));
|
assert(!node.peerman);
|
||||||
|
node.peerman = std::make_unique<PeerManager>(chainparams, *node.connman, node.banman.get(),
|
||||||
|
*node.scheduler, chainman, *node.mempool, ignores_incoming_txs);
|
||||||
RegisterValidationInterface(node.peerman.get());
|
RegisterValidationInterface(node.peerman.get());
|
||||||
|
|
||||||
// sanitize comments per BIP-0014, format user agent and check total size
|
// sanitize comments per BIP-0014, format user agent and check total size
|
||||||
|
|
|
||||||
|
|
@ -111,7 +111,6 @@ static const uint64_t RANDOMIZER_ID_ADDRCACHE = 0x1cf2e4ddd306dda9ULL; // SHA256
|
||||||
//
|
//
|
||||||
bool fDiscover = true;
|
bool fDiscover = true;
|
||||||
bool fListen = true;
|
bool fListen = true;
|
||||||
bool g_relay_txes = !DEFAULT_BLOCKSONLY;
|
|
||||||
RecursiveMutex cs_mapLocalHost;
|
RecursiveMutex cs_mapLocalHost;
|
||||||
std::map<CNetAddr, LocalServiceInfo> mapLocalHost GUARDED_BY(cs_mapLocalHost);
|
std::map<CNetAddr, LocalServiceInfo> mapLocalHost GUARDED_BY(cs_mapLocalHost);
|
||||||
static bool vfLimited[NET_MAX] GUARDED_BY(cs_mapLocalHost) = {};
|
static bool vfLimited[NET_MAX] GUARDED_BY(cs_mapLocalHost) = {};
|
||||||
|
|
|
||||||
|
|
@ -665,7 +665,6 @@ CAddress GetLocalAddress(const CNetAddr *paddrPeer, ServiceFlags nLocalServices)
|
||||||
|
|
||||||
extern bool fDiscover;
|
extern bool fDiscover;
|
||||||
extern bool fListen;
|
extern bool fListen;
|
||||||
extern bool g_relay_txes;
|
|
||||||
|
|
||||||
/** Subversion as sent to the P2P network in `version` messages */
|
/** Subversion as sent to the P2P network in `version` messages */
|
||||||
extern std::string strSubVersion;
|
extern std::string strSubVersion;
|
||||||
|
|
|
||||||
|
|
@ -432,32 +432,6 @@ static void UpdatePreferredDownload(const CNode& node, CNodeState* state) EXCLUS
|
||||||
nPreferredDownload += state->fPreferredDownload;
|
nPreferredDownload += state->fPreferredDownload;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void PushNodeVersion(CNode& pnode, CConnman& connman, int64_t nTime)
|
|
||||||
{
|
|
||||||
// Note that pnode->GetLocalServices() is a reflection of the local
|
|
||||||
// services we were offering when the CNode object was created for this
|
|
||||||
// peer.
|
|
||||||
ServiceFlags nLocalNodeServices = pnode.GetLocalServices();
|
|
||||||
uint64_t nonce = pnode.GetLocalNonce();
|
|
||||||
int nNodeStartingHeight = pnode.GetMyStartingHeight();
|
|
||||||
NodeId nodeid = pnode.GetId();
|
|
||||||
CAddress addr = pnode.addr;
|
|
||||||
|
|
||||||
CAddress addrYou = addr.IsRoutable() && !IsProxy(addr) && addr.IsAddrV1Compatible() ?
|
|
||||||
addr :
|
|
||||||
CAddress(CService(), addr.nServices);
|
|
||||||
CAddress addrMe = CAddress(CService(), nLocalNodeServices);
|
|
||||||
|
|
||||||
connman.PushMessage(&pnode, CNetMsgMaker(INIT_PROTO_VERSION).Make(NetMsgType::VERSION, PROTOCOL_VERSION, (uint64_t)nLocalNodeServices, nTime, addrYou, addrMe,
|
|
||||||
nonce, strSubVersion, nNodeStartingHeight, ::g_relay_txes && pnode.m_tx_relay != nullptr));
|
|
||||||
|
|
||||||
if (fLogIPs) {
|
|
||||||
LogPrint(BCLog::NET, "send version message: version %d, blocks=%d, us=%s, them=%s, peer=%d\n", PROTOCOL_VERSION, nNodeStartingHeight, addrMe.ToString(), addrYou.ToString(), nodeid);
|
|
||||||
} else {
|
|
||||||
LogPrint(BCLog::NET, "send version message: version %d, blocks=%d, us=%s, peer=%d\n", PROTOCOL_VERSION, nNodeStartingHeight, addrMe.ToString(), nodeid);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Returns a bool indicating whether we requested this block.
|
// Returns a bool indicating whether we requested this block.
|
||||||
// Also used if a block was /not/ received and timed out or started with another peer
|
// Also used if a block was /not/ received and timed out or started with another peer
|
||||||
static bool MarkBlockAsReceived(const uint256& hash) EXCLUSIVE_LOCKS_REQUIRED(cs_main) {
|
static bool MarkBlockAsReceived(const uint256& hash) EXCLUSIVE_LOCKS_REQUIRED(cs_main) {
|
||||||
|
|
@ -708,6 +682,32 @@ static void FindNextBlocksToDownload(NodeId nodeid, unsigned int count, std::vec
|
||||||
|
|
||||||
} // namespace
|
} // namespace
|
||||||
|
|
||||||
|
void PeerManager::PushNodeVersion(CNode& pnode, int64_t nTime)
|
||||||
|
{
|
||||||
|
// Note that pnode->GetLocalServices() is a reflection of the local
|
||||||
|
// services we were offering when the CNode object was created for this
|
||||||
|
// peer.
|
||||||
|
ServiceFlags nLocalNodeServices = pnode.GetLocalServices();
|
||||||
|
uint64_t nonce = pnode.GetLocalNonce();
|
||||||
|
int nNodeStartingHeight = pnode.GetMyStartingHeight();
|
||||||
|
NodeId nodeid = pnode.GetId();
|
||||||
|
CAddress addr = pnode.addr;
|
||||||
|
|
||||||
|
CAddress addrYou = addr.IsRoutable() && !IsProxy(addr) && addr.IsAddrV1Compatible() ?
|
||||||
|
addr :
|
||||||
|
CAddress(CService(), addr.nServices);
|
||||||
|
CAddress addrMe = CAddress(CService(), nLocalNodeServices);
|
||||||
|
|
||||||
|
m_connman.PushMessage(&pnode, CNetMsgMaker(INIT_PROTO_VERSION).Make(NetMsgType::VERSION, PROTOCOL_VERSION, (uint64_t)nLocalNodeServices, nTime, addrYou, addrMe,
|
||||||
|
nonce, strSubVersion, nNodeStartingHeight, !m_ignore_incoming_txs && pnode.m_tx_relay != nullptr));
|
||||||
|
|
||||||
|
if (fLogIPs) {
|
||||||
|
LogPrint(BCLog::NET, "send version message: version %d, blocks=%d, us=%s, them=%s, peer=%d\n", PROTOCOL_VERSION, nNodeStartingHeight, addrMe.ToString(), addrYou.ToString(), nodeid);
|
||||||
|
} else {
|
||||||
|
LogPrint(BCLog::NET, "send version message: version %d, blocks=%d, us=%s, peer=%d\n", PROTOCOL_VERSION, nNodeStartingHeight, addrMe.ToString(), nodeid);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void PeerManager::AddTxAnnouncement(const CNode& node, const GenTxid& gtxid, std::chrono::microseconds current_time)
|
void PeerManager::AddTxAnnouncement(const CNode& node, const GenTxid& gtxid, std::chrono::microseconds current_time)
|
||||||
{
|
{
|
||||||
AssertLockHeld(::cs_main); // For m_txrequest
|
AssertLockHeld(::cs_main); // For m_txrequest
|
||||||
|
|
@ -759,7 +759,7 @@ void PeerManager::InitializeNode(CNode *pnode) {
|
||||||
m_peer_map.emplace_hint(m_peer_map.end(), nodeid, std::move(peer));
|
m_peer_map.emplace_hint(m_peer_map.end(), nodeid, std::move(peer));
|
||||||
}
|
}
|
||||||
if (!pnode->IsInboundConn()) {
|
if (!pnode->IsInboundConn()) {
|
||||||
PushNodeVersion(*pnode, m_connman, GetTime());
|
PushNodeVersion(*pnode, GetTime());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1124,13 +1124,15 @@ static bool BlockRequestAllowed(const CBlockIndex* pindex, const Consensus::Para
|
||||||
}
|
}
|
||||||
|
|
||||||
PeerManager::PeerManager(const CChainParams& chainparams, CConnman& connman, BanMan* banman,
|
PeerManager::PeerManager(const CChainParams& chainparams, CConnman& connman, BanMan* banman,
|
||||||
CScheduler& scheduler, ChainstateManager& chainman, CTxMemPool& pool)
|
CScheduler& scheduler, ChainstateManager& chainman, CTxMemPool& pool,
|
||||||
|
bool ignore_incoming_txs)
|
||||||
: m_chainparams(chainparams),
|
: m_chainparams(chainparams),
|
||||||
m_connman(connman),
|
m_connman(connman),
|
||||||
m_banman(banman),
|
m_banman(banman),
|
||||||
m_chainman(chainman),
|
m_chainman(chainman),
|
||||||
m_mempool(pool),
|
m_mempool(pool),
|
||||||
m_stale_tip_check_time(0)
|
m_stale_tip_check_time(0),
|
||||||
|
m_ignore_incoming_txs(ignore_incoming_txs)
|
||||||
{
|
{
|
||||||
// Initialize global variables that cannot be constructed at startup.
|
// Initialize global variables that cannot be constructed at startup.
|
||||||
recentRejects.reset(new CRollingBloomFilter(120000, 0.000001));
|
recentRejects.reset(new CRollingBloomFilter(120000, 0.000001));
|
||||||
|
|
@ -2312,9 +2314,9 @@ void PeerManager::ProcessMessage(CNode& pfrom, const std::string& msg_type, CDat
|
||||||
SeenLocal(addrMe);
|
SeenLocal(addrMe);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Be shy and don't send version until we hear
|
// Inbound peers send us their version message when they connect.
|
||||||
if (pfrom.IsInboundConn())
|
// We send our version message in response.
|
||||||
PushNodeVersion(pfrom, m_connman, GetAdjustedTime());
|
if (pfrom.IsInboundConn()) PushNodeVersion(pfrom, GetAdjustedTime());
|
||||||
|
|
||||||
// Change version
|
// Change version
|
||||||
const int greatest_common_version = std::min(nVersion, PROTOCOL_VERSION);
|
const int greatest_common_version = std::min(nVersion, PROTOCOL_VERSION);
|
||||||
|
|
@ -2624,7 +2626,7 @@ void PeerManager::ProcessMessage(CNode& pfrom, const std::string& msg_type, CDat
|
||||||
|
|
||||||
// We won't accept tx inv's if we're in blocks-only mode, or this is a
|
// We won't accept tx inv's if we're in blocks-only mode, or this is a
|
||||||
// block-relay-only peer
|
// block-relay-only peer
|
||||||
bool fBlocksOnly = !g_relay_txes || (pfrom.m_tx_relay == nullptr);
|
bool fBlocksOnly = m_ignore_incoming_txs || (pfrom.m_tx_relay == nullptr);
|
||||||
|
|
||||||
// Allow peers with relay permission to send data other than blocks in blocks only mode
|
// Allow peers with relay permission to send data other than blocks in blocks only mode
|
||||||
if (pfrom.HasPermission(PF_RELAY)) {
|
if (pfrom.HasPermission(PF_RELAY)) {
|
||||||
|
|
@ -2901,7 +2903,7 @@ void PeerManager::ProcessMessage(CNode& pfrom, const std::string& msg_type, CDat
|
||||||
// Stop processing the transaction early if
|
// Stop processing the transaction early if
|
||||||
// 1) We are in blocks only mode and peer has no relay permission
|
// 1) We are in blocks only mode and peer has no relay permission
|
||||||
// 2) This peer is a block-relay-only peer
|
// 2) This peer is a block-relay-only peer
|
||||||
if ((!g_relay_txes && !pfrom.HasPermission(PF_RELAY)) || (pfrom.m_tx_relay == nullptr))
|
if ((m_ignore_incoming_txs && !pfrom.HasPermission(PF_RELAY)) || (pfrom.m_tx_relay == nullptr))
|
||||||
{
|
{
|
||||||
LogPrint(BCLog::NET, "transaction sent in violation of protocol peer=%d\n", pfrom.GetId());
|
LogPrint(BCLog::NET, "transaction sent in violation of protocol peer=%d\n", pfrom.GetId());
|
||||||
pfrom.fDisconnect = true;
|
pfrom.fDisconnect = true;
|
||||||
|
|
|
||||||
|
|
@ -76,7 +76,8 @@ using PeerRef = std::shared_ptr<Peer>;
|
||||||
class PeerManager final : public CValidationInterface, public NetEventsInterface {
|
class PeerManager final : public CValidationInterface, public NetEventsInterface {
|
||||||
public:
|
public:
|
||||||
PeerManager(const CChainParams& chainparams, CConnman& connman, BanMan* banman,
|
PeerManager(const CChainParams& chainparams, CConnman& connman, BanMan* banman,
|
||||||
CScheduler& scheduler, ChainstateManager& chainman, CTxMemPool& pool);
|
CScheduler& scheduler, ChainstateManager& chainman, CTxMemPool& pool,
|
||||||
|
bool ignore_incoming_txs);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Overridden from CValidationInterface.
|
* Overridden from CValidationInterface.
|
||||||
|
|
@ -138,6 +139,9 @@ public:
|
||||||
/** Get statistics from node state */
|
/** Get statistics from node state */
|
||||||
bool GetNodeStateStats(NodeId nodeid, CNodeStateStats& stats);
|
bool GetNodeStateStats(NodeId nodeid, CNodeStateStats& stats);
|
||||||
|
|
||||||
|
/** Whether this node ignores txs received over p2p. */
|
||||||
|
bool IgnoresIncomingTxs() {return m_ignore_incoming_txs;};
|
||||||
|
|
||||||
private:
|
private:
|
||||||
/** Get a shared pointer to the Peer object.
|
/** Get a shared pointer to the Peer object.
|
||||||
* May return an empty shared_ptr if the Peer object can't be found. */
|
* May return an empty shared_ptr if the Peer object can't be found. */
|
||||||
|
|
@ -186,6 +190,9 @@ private:
|
||||||
void AddTxAnnouncement(const CNode& node, const GenTxid& gtxid, std::chrono::microseconds current_time)
|
void AddTxAnnouncement(const CNode& node, const GenTxid& gtxid, std::chrono::microseconds current_time)
|
||||||
EXCLUSIVE_LOCKS_REQUIRED(::cs_main);
|
EXCLUSIVE_LOCKS_REQUIRED(::cs_main);
|
||||||
|
|
||||||
|
/** Send a version message to a peer */
|
||||||
|
void PushNodeVersion(CNode& pnode, int64_t nTime);
|
||||||
|
|
||||||
const CChainParams& m_chainparams;
|
const CChainParams& m_chainparams;
|
||||||
CConnman& m_connman;
|
CConnman& m_connman;
|
||||||
/** Pointer to this node's banman. May be nullptr - check existence before dereferencing. */
|
/** Pointer to this node's banman. May be nullptr - check existence before dereferencing. */
|
||||||
|
|
@ -196,6 +203,9 @@ private:
|
||||||
|
|
||||||
int64_t m_stale_tip_check_time; //!< Next time to check for stale tip
|
int64_t m_stale_tip_check_time; //!< Next time to check for stale tip
|
||||||
|
|
||||||
|
//* Whether this node is running in blocks only mode */
|
||||||
|
const bool m_ignore_incoming_txs;
|
||||||
|
|
||||||
/** Protects m_peer_map */
|
/** Protects m_peer_map */
|
||||||
mutable Mutex m_peer_mutex;
|
mutable Mutex m_peer_mutex;
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
|
|
@ -578,7 +578,9 @@ static RPCHelpMan getnetworkinfo()
|
||||||
obj.pushKV("localservices", strprintf("%016x", services));
|
obj.pushKV("localservices", strprintf("%016x", services));
|
||||||
obj.pushKV("localservicesnames", GetServicesNames(services));
|
obj.pushKV("localservicesnames", GetServicesNames(services));
|
||||||
}
|
}
|
||||||
obj.pushKV("localrelay", g_relay_txes);
|
if (node.peerman) {
|
||||||
|
obj.pushKV("localrelay", !node.peerman->IgnoresIncomingTxs());
|
||||||
|
}
|
||||||
obj.pushKV("timeoffset", GetTimeOffset());
|
obj.pushKV("timeoffset", GetTimeOffset());
|
||||||
if (node.connman) {
|
if (node.connman) {
|
||||||
obj.pushKV("networkactive", node.connman->GetNetworkActive());
|
obj.pushKV("networkactive", node.connman->GetNetworkActive());
|
||||||
|
|
|
||||||
|
|
@ -80,7 +80,8 @@ BOOST_AUTO_TEST_CASE(outbound_slow_chain_eviction)
|
||||||
{
|
{
|
||||||
const CChainParams& chainparams = Params();
|
const CChainParams& chainparams = Params();
|
||||||
auto connman = MakeUnique<CConnman>(0x1337, 0x1337);
|
auto connman = MakeUnique<CConnman>(0x1337, 0x1337);
|
||||||
auto peerLogic = MakeUnique<PeerManager>(chainparams, *connman, nullptr, *m_node.scheduler, *m_node.chainman, *m_node.mempool);
|
auto peerLogic = std::make_unique<PeerManager>(chainparams, *connman, nullptr, *m_node.scheduler,
|
||||||
|
*m_node.chainman, *m_node.mempool, false);
|
||||||
|
|
||||||
// Mock an outbound peer
|
// Mock an outbound peer
|
||||||
CAddress addr1(ip(0xa0b0c001), NODE_NONE);
|
CAddress addr1(ip(0xa0b0c001), NODE_NONE);
|
||||||
|
|
@ -149,7 +150,8 @@ BOOST_AUTO_TEST_CASE(stale_tip_peer_management)
|
||||||
{
|
{
|
||||||
const CChainParams& chainparams = Params();
|
const CChainParams& chainparams = Params();
|
||||||
auto connman = MakeUnique<CConnmanTest>(0x1337, 0x1337);
|
auto connman = MakeUnique<CConnmanTest>(0x1337, 0x1337);
|
||||||
auto peerLogic = MakeUnique<PeerManager>(chainparams, *connman, nullptr, *m_node.scheduler, *m_node.chainman, *m_node.mempool);
|
auto peerLogic = std::make_unique<PeerManager>(chainparams, *connman, nullptr, *m_node.scheduler,
|
||||||
|
*m_node.chainman, *m_node.mempool, false);
|
||||||
|
|
||||||
constexpr int max_outbound_full_relay = MAX_OUTBOUND_FULL_RELAY_CONNECTIONS;
|
constexpr int max_outbound_full_relay = MAX_OUTBOUND_FULL_RELAY_CONNECTIONS;
|
||||||
CConnman::Options options;
|
CConnman::Options options;
|
||||||
|
|
@ -222,7 +224,8 @@ BOOST_AUTO_TEST_CASE(peer_discouragement)
|
||||||
const CChainParams& chainparams = Params();
|
const CChainParams& chainparams = Params();
|
||||||
auto banman = MakeUnique<BanMan>(GetDataDir() / "banlist.dat", nullptr, DEFAULT_MISBEHAVING_BANTIME);
|
auto banman = MakeUnique<BanMan>(GetDataDir() / "banlist.dat", nullptr, DEFAULT_MISBEHAVING_BANTIME);
|
||||||
auto connman = MakeUnique<CConnman>(0x1337, 0x1337);
|
auto connman = MakeUnique<CConnman>(0x1337, 0x1337);
|
||||||
auto peerLogic = MakeUnique<PeerManager>(chainparams, *connman, banman.get(), *m_node.scheduler, *m_node.chainman, *m_node.mempool);
|
auto peerLogic = std::make_unique<PeerManager>(chainparams, *connman, banman.get(), *m_node.scheduler,
|
||||||
|
*m_node.chainman, *m_node.mempool, false);
|
||||||
|
|
||||||
banman->ClearBanned();
|
banman->ClearBanned();
|
||||||
CAddress addr1(ip(0xa0b0c001), NODE_NONE);
|
CAddress addr1(ip(0xa0b0c001), NODE_NONE);
|
||||||
|
|
@ -268,7 +271,8 @@ BOOST_AUTO_TEST_CASE(DoS_bantime)
|
||||||
const CChainParams& chainparams = Params();
|
const CChainParams& chainparams = Params();
|
||||||
auto banman = MakeUnique<BanMan>(GetDataDir() / "banlist.dat", nullptr, DEFAULT_MISBEHAVING_BANTIME);
|
auto banman = MakeUnique<BanMan>(GetDataDir() / "banlist.dat", nullptr, DEFAULT_MISBEHAVING_BANTIME);
|
||||||
auto connman = MakeUnique<CConnman>(0x1337, 0x1337);
|
auto connman = MakeUnique<CConnman>(0x1337, 0x1337);
|
||||||
auto peerLogic = MakeUnique<PeerManager>(chainparams, *connman, banman.get(), *m_node.scheduler, *m_node.chainman, *m_node.mempool);
|
auto peerLogic = std::make_unique<PeerManager>(chainparams, *connman, banman.get(), *m_node.scheduler,
|
||||||
|
*m_node.chainman, *m_node.mempool, false);
|
||||||
|
|
||||||
banman->ClearBanned();
|
banman->ClearBanned();
|
||||||
int64_t nStartTime = GetTime();
|
int64_t nStartTime = GetTime();
|
||||||
|
|
|
||||||
|
|
@ -192,7 +192,9 @@ TestingSetup::TestingSetup(const std::string& chainName, const std::vector<const
|
||||||
|
|
||||||
m_node.banman = MakeUnique<BanMan>(GetDataDir() / "banlist.dat", nullptr, DEFAULT_MISBEHAVING_BANTIME);
|
m_node.banman = MakeUnique<BanMan>(GetDataDir() / "banlist.dat", nullptr, DEFAULT_MISBEHAVING_BANTIME);
|
||||||
m_node.connman = MakeUnique<CConnman>(0x1337, 0x1337); // Deterministic randomness for tests.
|
m_node.connman = MakeUnique<CConnman>(0x1337, 0x1337); // Deterministic randomness for tests.
|
||||||
m_node.peerman = MakeUnique<PeerManager>(chainparams, *m_node.connman, m_node.banman.get(), *m_node.scheduler, *m_node.chainman, *m_node.mempool);
|
m_node.peerman = std::make_unique<PeerManager>(chainparams, *m_node.connman, m_node.banman.get(),
|
||||||
|
*m_node.scheduler, *m_node.chainman, *m_node.mempool,
|
||||||
|
false);
|
||||||
{
|
{
|
||||||
CConnman::Options options;
|
CConnman::Options options;
|
||||||
options.m_msgproc = m_node.peerman.get();
|
options.m_msgproc = m_node.peerman.get();
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue