Page MenuHomePhabricator

D12118.diff
No OneTemporary

D12118.diff

diff --git a/src/avalanche/test/processor_tests.cpp b/src/avalanche/test/processor_tests.cpp
--- a/src/avalanche/test/processor_tests.cpp
+++ b/src/avalanche/test/processor_tests.cpp
@@ -103,7 +103,7 @@
m_node.connman = std::move(connman);
m_node.peerman = ::PeerManager::make(
config.GetChainParams(), *m_connman, m_node.banman.get(),
- *m_node.scheduler, *m_node.chainman, *m_node.mempool, false);
+ *m_node.chainman, *m_node.mempool, false);
m_node.chain = interfaces::MakeChain(m_node, config.GetChainParams());
// Get the processor ready.
diff --git a/src/init.cpp b/src/init.cpp
--- a/src/init.cpp
+++ b/src/init.cpp
@@ -2388,10 +2388,9 @@
ChainstateManager &chainman = *node.chainman;
assert(!node.peerman);
- node.peerman =
- PeerManager::make(chainparams, *node.connman, node.banman.get(),
- *node.scheduler, chainman, *node.mempool,
- args.GetBoolArg("-blocksonly", DEFAULT_BLOCKSONLY));
+ node.peerman = PeerManager::make(
+ chainparams, *node.connman, node.banman.get(), chainman, *node.mempool,
+ args.GetBoolArg("-blocksonly", DEFAULT_BLOCKSONLY));
RegisterValidationInterface(node.peerman.get());
// sanitize comments per BIP-0014, format user agent and check total size
@@ -3159,6 +3158,10 @@
},
DUMP_BANS_INTERVAL);
+ if (node.peerman) {
+ node.peerman->StartScheduledTasks(*node.scheduler);
+ }
+
// Start Avalanche's event loop.
g_avalanche->startEventLoop(*node.scheduler);
diff --git a/src/net_processing.h b/src/net_processing.h
--- a/src/net_processing.h
+++ b/src/net_processing.h
@@ -49,12 +49,16 @@
class PeerManager : public CValidationInterface, public NetEventsInterface {
public:
- static std::unique_ptr<PeerManager>
- make(const CChainParams &chainparams, CConnman &connman, BanMan *banman,
- CScheduler &scheduler, ChainstateManager &chainman, CTxMemPool &pool,
- bool ignore_incoming_txs);
+ static std::unique_ptr<PeerManager> make(const CChainParams &chainparams,
+ CConnman &connman, BanMan *banman,
+ ChainstateManager &chainman,
+ CTxMemPool &pool,
+ bool ignore_incoming_txs);
virtual ~PeerManager() {}
+ /** Begin running background tasks, should only be called once */
+ virtual void StartScheduledTasks(CScheduler &scheduler) = 0;
+
/** Get statistics from node state */
virtual bool GetNodeStateStats(NodeId nodeid, CNodeStateStats &stats) = 0;
diff --git a/src/net_processing.cpp b/src/net_processing.cpp
--- a/src/net_processing.cpp
+++ b/src/net_processing.cpp
@@ -464,9 +464,8 @@
class PeerManagerImpl final : public PeerManager {
public:
PeerManagerImpl(const CChainParams &chainparams, CConnman &connman,
- BanMan *banman, CScheduler &scheduler,
- ChainstateManager &chainman, CTxMemPool &pool,
- bool ignore_incoming_txs);
+ BanMan *banman, ChainstateManager &chainman,
+ CTxMemPool &pool, bool ignore_incoming_txs);
/** Overridden from CValidationInterface. */
void BlockConnected(const std::shared_ptr<const CBlock> &pblock,
@@ -491,6 +490,7 @@
EXCLUSIVE_LOCKS_REQUIRED(pto->cs_sendProcessing);
/** Implement PeerManager */
+ void StartScheduledTasks(CScheduler &scheduler) override;
void CheckForStaleTipAndEvictPeers() override;
bool GetNodeStateStats(NodeId nodeid, CNodeStateStats &stats) override;
bool IgnoresIncomingTxs() override { return m_ignore_incoming_txs; }
@@ -2049,17 +2049,14 @@
std::unique_ptr<PeerManager>
PeerManager::make(const CChainParams &chainparams, CConnman &connman,
- BanMan *banman, CScheduler &scheduler,
- ChainstateManager &chainman, CTxMemPool &pool,
+ BanMan *banman, ChainstateManager &chainman, CTxMemPool &pool,
bool ignore_incoming_txs) {
- return std::make_unique<PeerManagerImpl>(chainparams, connman, banman,
- scheduler, chainman, pool,
- ignore_incoming_txs);
+ return std::make_unique<PeerManagerImpl>(
+ chainparams, connman, banman, chainman, pool, ignore_incoming_txs);
}
PeerManagerImpl::PeerManagerImpl(const CChainParams &chainparams,
CConnman &connman, BanMan *banman,
- CScheduler &scheduler,
ChainstateManager &chainman, CTxMemPool &pool,
bool ignore_incoming_txs)
: m_chainparams(chainparams), m_connman(connman), m_banman(banman),
@@ -2083,7 +2080,9 @@
// same probability that we have in the reject filter).
m_recent_confirmed_transactions.reset(
new CRollingBloomFilter(24000, 0.000001));
+}
+void PeerManagerImpl::StartScheduledTasks(CScheduler &scheduler) {
// Stale tip checking and peer eviction are on two different timers, but we
// don't want them to get out of sync due to drift in the scheduler, so we
// combine them in one function and schedule at the quicker (peer-eviction)
diff --git a/src/test/denialofservice_tests.cpp b/src/test/denialofservice_tests.cpp
--- a/src/test/denialofservice_tests.cpp
+++ b/src/test/denialofservice_tests.cpp
@@ -68,9 +68,9 @@
auto connman = std::make_unique<CConnman>(config, 0x1337, 0x1337);
// Disable inactivity checks for this test to avoid interference
static_cast<ConnmanTestMsg *>(connman.get())->SetPeerConnectTimeout(99999s);
- auto peerLogic = PeerManager::make(
- config.GetChainParams(), *connman, nullptr, *m_node.scheduler,
- *m_node.chainman, *m_node.mempool, false);
+ auto peerLogic =
+ PeerManager::make(config.GetChainParams(), *connman, nullptr,
+ *m_node.chainman, *m_node.mempool, false);
// Mock an outbound peer
CAddress addr1(ip(0xa0b0c001), NODE_NONE);
@@ -154,9 +154,9 @@
const Config &config = GetConfig();
auto connman = std::make_unique<CConnmanTest>(config, 0x1337, 0x1337);
- auto peerLogic = PeerManager::make(
- config.GetChainParams(), *connman, nullptr, *m_node.scheduler,
- *m_node.chainman, *m_node.mempool, false);
+ auto peerLogic =
+ PeerManager::make(config.GetChainParams(), *connman, nullptr,
+ *m_node.chainman, *m_node.mempool, false);
const Consensus::Params &consensusParams =
config.GetChainParams().GetConsensus();
@@ -240,9 +240,9 @@
m_args.GetDataDirBase() / "banlist.dat", config.GetChainParams(),
nullptr, DEFAULT_MISBEHAVING_BANTIME);
auto connman = std::make_unique<CConnman>(config, 0x1337, 0x1337);
- auto peerLogic = PeerManager::make(
- config.GetChainParams(), *connman, banman.get(), *m_node.scheduler,
- *m_node.chainman, *m_node.mempool, false);
+ auto peerLogic =
+ PeerManager::make(config.GetChainParams(), *connman, banman.get(),
+ *m_node.chainman, *m_node.mempool, false);
banman->ClearBanned();
CAddress addr1(ip(0xa0b0c001), NODE_NONE);
@@ -304,9 +304,9 @@
m_args.GetDataDirBase() / "banlist.dat", config.GetChainParams(),
nullptr, DEFAULT_MISBEHAVING_BANTIME);
auto connman = std::make_unique<CConnman>(config, 0x1337, 0x1337);
- auto peerLogic = PeerManager::make(
- config.GetChainParams(), *connman, banman.get(), *m_node.scheduler,
- *m_node.chainman, *m_node.mempool, false);
+ auto peerLogic =
+ PeerManager::make(config.GetChainParams(), *connman, banman.get(),
+ *m_node.chainman, *m_node.mempool, false);
banman->ClearBanned();
int64_t nStartTime = GetTime();
diff --git a/src/test/net_tests.cpp b/src/test/net_tests.cpp
--- a/src/test/net_tests.cpp
+++ b/src/test/net_tests.cpp
@@ -1166,9 +1166,9 @@
const CChainParams &params = GetConfig().GetChainParams();
m_node.connman = std::make_unique<CConnmanTest>();
- m_node.peerman = PeerManager::make(
- params, *m_node.connman, m_node.banman.get(), *m_node.scheduler,
- *m_node.chainman, *m_node.mempool, false);
+ m_node.peerman =
+ PeerManager::make(params, *m_node.connman, m_node.banman.get(),
+ *m_node.chainman, *m_node.mempool, false);
bilingual_str error;
// Init the global avalanche object otherwise the avalanche outbound
diff --git a/src/test/util/setup_common.cpp b/src/test/util/setup_common.cpp
--- a/src/test/util/setup_common.cpp
+++ b/src/test/util/setup_common.cpp
@@ -236,9 +236,9 @@
DEFAULT_MISBEHAVING_BANTIME);
// Deterministic randomness for tests.
m_node.connman = std::make_unique<CConnman>(config, 0x1337, 0x1337);
- m_node.peerman = PeerManager::make(
- chainparams, *m_node.connman, m_node.banman.get(), *m_node.scheduler,
- *m_node.chainman, *m_node.mempool, false);
+ m_node.peerman =
+ PeerManager::make(chainparams, *m_node.connman, m_node.banman.get(),
+ *m_node.chainman, *m_node.mempool, false);
{
CConnman::Options options;
options.m_msgproc.push_back(m_node.peerman.get());

File Metadata

Mime Type
text/plain
Expires
Sat, Apr 26, 11:50 (2 h, 35 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
5573457
Default Alt Text
D12118.diff (9 KB)

Event Timeline