Skip to content

Commit 392a95d

Browse files
committed
[net_processing] Keep addrman reference in PeerManager
1 parent 1c25adf commit 392a95d

File tree

5 files changed

+28
-25
lines changed

5 files changed

+28
-25
lines changed

src/init.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1424,7 +1424,7 @@ bool AppInitMain(const util::Ref& context, NodeContext& node, interfaces::BlockA
14241424
ChainstateManager& chainman = *Assert(node.chainman);
14251425

14261426
assert(!node.peerman);
1427-
node.peerman = PeerManager::make(chainparams, *node.connman, node.banman.get(),
1427+
node.peerman = PeerManager::make(chainparams, *node.connman, *node.addrman, node.banman.get(),
14281428
*node.scheduler, chainman, *node.mempool, ignores_incoming_txs);
14291429
RegisterValidationInterface(node.peerman.get());
14301430

src/net_processing.cpp

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -225,9 +225,9 @@ using PeerRef = std::shared_ptr<Peer>;
225225
class PeerManagerImpl final : public PeerManager
226226
{
227227
public:
228-
PeerManagerImpl(const CChainParams& chainparams, CConnman& connman, BanMan* banman,
229-
CScheduler& scheduler, ChainstateManager& chainman, CTxMemPool& pool,
230-
bool ignore_incoming_txs);
228+
PeerManagerImpl(const CChainParams& chainparams, CConnman& connman, CAddrMan& addrman,
229+
BanMan* banman, CScheduler& scheduler, ChainstateManager& chainman,
230+
CTxMemPool& pool, bool ignore_incoming_txs);
231231

232232
/** Overridden from CValidationInterface. */
233233
void BlockConnected(const std::shared_ptr<const CBlock>& pblock, const CBlockIndex* pindexConnected) override;
@@ -322,6 +322,7 @@ class PeerManagerImpl final : public PeerManager
322322

323323
const CChainParams& m_chainparams;
324324
CConnman& m_connman;
325+
CAddrMan& m_addrman;
325326
/** Pointer to this node's banman. May be nullptr - check existence before dereferencing. */
326327
BanMan* const m_banman;
327328
ChainstateManager& m_chainman;
@@ -1201,18 +1202,19 @@ bool PeerManagerImpl::BlockRequestAllowed(const CBlockIndex* pindex)
12011202
(GetBlockProofEquivalentTime(*pindexBestHeader, *pindex, *pindexBestHeader, m_chainparams.GetConsensus()) < STALE_RELAY_AGE_LIMIT);
12021203
}
12031204

1204-
std::unique_ptr<PeerManager> PeerManager::make(const CChainParams& chainparams, CConnman& connman, BanMan* banman,
1205-
CScheduler& scheduler, ChainstateManager& chainman, CTxMemPool& pool,
1206-
bool ignore_incoming_txs)
1205+
std::unique_ptr<PeerManager> PeerManager::make(const CChainParams& chainparams, CConnman& connman, CAddrMan& addrman,
1206+
BanMan* banman, CScheduler& scheduler, ChainstateManager& chainman,
1207+
CTxMemPool& pool, bool ignore_incoming_txs)
12071208
{
1208-
return std::make_unique<PeerManagerImpl>(chainparams, connman, banman, scheduler, chainman, pool, ignore_incoming_txs);
1209+
return std::make_unique<PeerManagerImpl>(chainparams, connman, addrman, banman, scheduler, chainman, pool, ignore_incoming_txs);
12091210
}
12101211

1211-
PeerManagerImpl::PeerManagerImpl(const CChainParams& chainparams, CConnman& connman, BanMan* banman,
1212-
CScheduler& scheduler, ChainstateManager& chainman, CTxMemPool& pool,
1213-
bool ignore_incoming_txs)
1212+
PeerManagerImpl::PeerManagerImpl(const CChainParams& chainparams, CConnman& connman, CAddrMan& addrman,
1213+
BanMan* banman, CScheduler& scheduler, ChainstateManager& chainman,
1214+
CTxMemPool& pool, bool ignore_incoming_txs)
12141215
: m_chainparams(chainparams),
12151216
m_connman(connman),
1217+
m_addrman(addrman),
12161218
m_banman(banman),
12171219
m_chainman(chainman),
12181220
m_mempool(pool),

src/net_processing.h

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
#include <sync.h>
1111
#include <validationinterface.h>
1212

13+
class CAddrMan;
1314
class CChainParams;
1415
class CTxMemPool;
1516
class ChainstateManager;
@@ -36,9 +37,9 @@ struct CNodeStateStats {
3637
class PeerManager : public CValidationInterface, public NetEventsInterface
3738
{
3839
public:
39-
static std::unique_ptr<PeerManager> make(const CChainParams& chainparams, CConnman& connman, BanMan* banman,
40-
CScheduler& scheduler, ChainstateManager& chainman, CTxMemPool& pool,
41-
bool ignore_incoming_txs);
40+
static std::unique_ptr<PeerManager> make(const CChainParams& chainparams, CConnman& connman, CAddrMan& addrman,
41+
BanMan* banman, CScheduler& scheduler, ChainstateManager& chainman,
42+
CTxMemPool& pool, bool ignore_incoming_txs);
4243
virtual ~PeerManager() { }
4344

4445
/** Get statistics from node state */

src/test/denialofservice_tests.cpp

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -68,8 +68,8 @@ BOOST_AUTO_TEST_CASE(outbound_slow_chain_eviction)
6868
{
6969
const CChainParams& chainparams = Params();
7070
auto connman = std::make_unique<CConnman>(0x1337, 0x1337, *m_node.addrman);
71-
auto peerLogic = PeerManager::make(chainparams, *connman, nullptr, *m_node.scheduler,
72-
*m_node.chainman, *m_node.mempool, false);
71+
auto peerLogic = PeerManager::make(chainparams, *connman, *m_node.addrman, nullptr,
72+
*m_node.scheduler, *m_node.chainman, *m_node.mempool, false);
7373

7474
// Mock an outbound peer
7575
CAddress addr1(ip(0xa0b0c001), NODE_NONE);
@@ -138,8 +138,8 @@ BOOST_AUTO_TEST_CASE(stale_tip_peer_management)
138138
{
139139
const CChainParams& chainparams = Params();
140140
auto connman = std::make_unique<CConnmanTest>(0x1337, 0x1337, *m_node.addrman);
141-
auto peerLogic = PeerManager::make(chainparams, *connman, nullptr, *m_node.scheduler,
142-
*m_node.chainman, *m_node.mempool, false);
141+
auto peerLogic = PeerManager::make(chainparams, *connman, *m_node.addrman, nullptr,
142+
*m_node.scheduler, *m_node.chainman, *m_node.mempool, false);
143143

144144
constexpr int max_outbound_full_relay = MAX_OUTBOUND_FULL_RELAY_CONNECTIONS;
145145
CConnman::Options options;
@@ -212,8 +212,8 @@ BOOST_AUTO_TEST_CASE(peer_discouragement)
212212
const CChainParams& chainparams = Params();
213213
auto banman = std::make_unique<BanMan>(GetDataDir() / "banlist.dat", nullptr, DEFAULT_MISBEHAVING_BANTIME);
214214
auto connman = std::make_unique<CConnman>(0x1337, 0x1337, *m_node.addrman);
215-
auto peerLogic = PeerManager::make(chainparams, *connman, banman.get(), *m_node.scheduler,
216-
*m_node.chainman, *m_node.mempool, false);
215+
auto peerLogic = PeerManager::make(chainparams, *connman, *m_node.addrman, banman.get(),
216+
*m_node.scheduler, *m_node.chainman, *m_node.mempool, false);
217217

218218
banman->ClearBanned();
219219
CAddress addr1(ip(0xa0b0c001), NODE_NONE);
@@ -259,8 +259,8 @@ BOOST_AUTO_TEST_CASE(DoS_bantime)
259259
const CChainParams& chainparams = Params();
260260
auto banman = std::make_unique<BanMan>(GetDataDir() / "banlist.dat", nullptr, DEFAULT_MISBEHAVING_BANTIME);
261261
auto connman = std::make_unique<CConnman>(0x1337, 0x1337, *m_node.addrman);
262-
auto peerLogic = PeerManager::make(chainparams, *connman, banman.get(), *m_node.scheduler,
263-
*m_node.chainman, *m_node.mempool, false);
262+
auto peerLogic = PeerManager::make(chainparams, *connman, *m_node.addrman, banman.get(),
263+
*m_node.scheduler, *m_node.chainman, *m_node.mempool, false);
264264

265265
banman->ClearBanned();
266266
int64_t nStartTime = GetTime();

src/test/util/setup_common.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -192,9 +192,9 @@ TestingSetup::TestingSetup(const std::string& chainName, const std::vector<const
192192
m_node.addrman = std::make_unique<CAddrMan>();
193193
m_node.banman = std::make_unique<BanMan>(GetDataDir() / "banlist.dat", nullptr, DEFAULT_MISBEHAVING_BANTIME);
194194
m_node.connman = std::make_unique<CConnman>(0x1337, 0x1337, *m_node.addrman); // Deterministic randomness for tests.
195-
m_node.peerman = PeerManager::make(chainparams, *m_node.connman, m_node.banman.get(),
196-
*m_node.scheduler, *m_node.chainman, *m_node.mempool,
197-
false);
195+
m_node.peerman = PeerManager::make(chainparams, *m_node.connman, *m_node.addrman,
196+
m_node.banman.get(), *m_node.scheduler, *m_node.chainman,
197+
*m_node.mempool, false);
198198
{
199199
CConnman::Options options;
200200
options.m_msgproc = m_node.peerman.get();

0 commit comments

Comments
 (0)