aboutsummaryrefslogtreecommitdiff
path: root/src/net_processing.h
diff options
context:
space:
mode:
authorLarry Ruane <larryruane@gmail.com>2021-07-28 16:18:53 -0600
committerLarry Ruane <larryruane@gmail.com>2021-07-30 16:34:09 -0600
commit703b1e612a4bd4521e20ae21eb8fb7c19f4ef942 (patch)
treeb51b0648990daf22ce59322f9b6abcf64619d6e3 /src/net_processing.h
parent4b1fb50def0dea0cd320bc43c12d9a12edde0390 (diff)
downloadbitcoin-703b1e612a4bd4521e20ae21eb8fb7c19f4ef942.tar.xz
Close minor startup race between main and scheduler threads
Don't schedule class PeerManagerImpl's background tasks from its constructor, but instead do that from a separate method, StartScheduledTasks(), that can be called later at the end of startup, after other things, such as the active chain, are initialzed.
Diffstat (limited to 'src/net_processing.h')
-rw-r--r--src/net_processing.h5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/net_processing.h b/src/net_processing.h
index c537efb5db..66492899ee 100644
--- a/src/net_processing.h
+++ b/src/net_processing.h
@@ -37,10 +37,13 @@ class PeerManager : public CValidationInterface, public NetEventsInterface
{
public:
static std::unique_ptr<PeerManager> make(const CChainParams& chainparams, CConnman& connman, CAddrMan& addrman,
- BanMan* banman, CScheduler& scheduler, ChainstateManager& chainman,
+ 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) const = 0;