Skip to content

Commit f613f34

Browse files
knstPastaPastaPasta
authored andcommitted
refactor: llmq/chainlocks no more depends on net_processing
1 parent 6ffc745 commit f613f34

File tree

4 files changed

+21
-20
lines changed

4 files changed

+21
-20
lines changed

src/llmq/chainlocks.cpp

Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@
1212
#include <chainparams.h>
1313
#include <consensus/validation.h>
1414
#include <masternode/sync.h>
15-
#include <net_processing.h>
1615
#include <node/blockstorage.h>
1716
#include <node/ui_interface.h>
1817
#include <scheduler.h>
@@ -21,14 +20,15 @@
2120
#include <util/thread.h>
2221
#include <util/time.h>
2322
#include <validation.h>
23+
#include <validationinterface.h>
2424

2525
namespace llmq
2626
{
2727
std::unique_ptr<CChainLocksHandler> chainLocksHandler;
2828

2929
CChainLocksHandler::CChainLocksHandler(CChainState& chainstate, CConnman& _connman, CMasternodeSync& mn_sync, CQuorumManager& _qman,
3030
CSigningManager& _sigman, CSigSharesManager& _shareman, CSporkManager& sporkManager,
31-
CTxMemPool& _mempool, const std::unique_ptr<PeerManager>& peerman) :
31+
CTxMemPool& _mempool) :
3232
m_chainstate(chainstate),
3333
connman(_connman),
3434
m_mn_sync(mn_sync),
@@ -37,7 +37,6 @@ CChainLocksHandler::CChainLocksHandler(CChainState& chainstate, CConnman& _connm
3737
shareman(_shareman),
3838
spork_manager(sporkManager),
3939
mempool(_mempool),
40-
m_peerman(peerman),
4140
scheduler(std::make_unique<CScheduler>()),
4241
scheduler_thread(std::make_unique<std::thread>(std::thread(util::TraceThread, "cl-schdlr", [&] { scheduler->serviceQueue(); })))
4342
{
@@ -91,21 +90,22 @@ CChainLockSig CChainLocksHandler::GetBestChainLock() const
9190
return bestChainLock;
9291
}
9392

94-
void CChainLocksHandler::ProcessMessage(const CNode& pfrom, const std::string& msg_type, CDataStream& vRecv)
93+
PeerMsgRet CChainLocksHandler::ProcessMessage(const CNode& pfrom, const std::string& msg_type, CDataStream& vRecv)
9594
{
9695
if (!AreChainLocksEnabled(spork_manager)) {
97-
return;
96+
return {};
9897
}
9998

10099
if (msg_type == NetMsgType::CLSIG) {
101100
CChainLockSig clsig;
102101
vRecv >> clsig;
103102

104-
ProcessNewChainLock(pfrom.GetId(), clsig, ::SerializeHash(clsig));
103+
return ProcessNewChainLock(pfrom.GetId(), clsig, ::SerializeHash(clsig));
105104
}
105+
return {};
106106
}
107107

108-
void CChainLocksHandler::ProcessNewChainLock(const NodeId from, const llmq::CChainLockSig& clsig, const uint256& hash)
108+
PeerMsgRet CChainLocksHandler::ProcessNewChainLock(const NodeId from, const llmq::CChainLockSig& clsig, const uint256& hash)
109109
{
110110
CheckActiveState();
111111

@@ -119,21 +119,21 @@ void CChainLocksHandler::ProcessNewChainLock(const NodeId from, const llmq::CCha
119119
{
120120
LOCK(cs);
121121
if (!seenChainLocks.emplace(hash, GetTimeMillis()).second) {
122-
return;
122+
return {};
123123
}
124124

125125
if (!bestChainLock.IsNull() && clsig.getHeight() <= bestChainLock.getHeight()) {
126126
// no need to process/relay older CLSIGs
127-
return;
127+
return {};
128128
}
129129
}
130130

131131
if (!VerifyChainLock(clsig)) {
132132
LogPrint(BCLog::CHAINLOCKS, "CChainLocksHandler::%s -- invalid CLSIG (%s), peer=%d\n", __func__, clsig.ToString(), from);
133133
if (from != -1) {
134-
m_peerman->Misbehaving(from, 10);
134+
return tl::unexpected{10};
135135
}
136-
return;
136+
return {};
137137
}
138138

139139
CBlockIndex* pindex = WITH_LOCK(cs_main, return m_chainstate.m_blockman.LookupBlockIndex(clsig.getBlockHash()));
@@ -150,7 +150,7 @@ void CChainLocksHandler::ProcessNewChainLock(const NodeId from, const llmq::CCha
150150
LogPrintf("CChainLocksHandler::%s -- height of CLSIG (%s) does not match the specified block's height (%d)\n",
151151
__func__, clsig.ToString(), pindex->nHeight);
152152
// Note: not relaying clsig here
153-
return;
153+
return {};
154154
}
155155

156156
bestChainLockWithKnownBlock = bestChainLock;
@@ -167,7 +167,7 @@ void CChainLocksHandler::ProcessNewChainLock(const NodeId from, const llmq::CCha
167167
if (pindex == nullptr) {
168168
// we don't know the block/header for this CLSIG yet, so bail out for now
169169
// when the block or the header later comes in, we will enforce the correct chain
170-
return;
170+
return {};
171171
}
172172

173173
scheduler->scheduleFromNow([&]() {
@@ -177,6 +177,7 @@ void CChainLocksHandler::ProcessNewChainLock(const NodeId from, const llmq::CCha
177177

178178
LogPrint(BCLog::CHAINLOCKS, "CChainLocksHandler::%s -- processed new CLSIG (%s), peer=%d\n",
179179
__func__, clsig.ToString(), from);
180+
return {};
180181
}
181182

182183
void CChainLocksHandler::AcceptedBlockHeader(gsl::not_null<const CBlockIndex*> pindexNew)

src/llmq/chainlocks.h

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
#include <crypto/common.h>
1111
#include <llmq/signing.h>
1212
#include <net.h>
13+
#include <net_types.h>
1314
#include <primitives/block.h>
1415
#include <primitives/transaction.h>
1516
#include <saltedhasher.h>
@@ -29,7 +30,6 @@ class CMasternodeSync;
2930
class CScheduler;
3031
class CSporkManager;
3132
class CTxMemPool;
32-
class PeerManager;
3333

3434
namespace llmq
3535
{
@@ -53,7 +53,6 @@ class CChainLocksHandler : public CRecoveredSigsListener
5353
CSigSharesManager& shareman;
5454
CSporkManager& spork_manager;
5555
CTxMemPool& mempool;
56-
const std::unique_ptr<PeerManager>& m_peerman;
5756

5857
std::unique_ptr<CScheduler> scheduler;
5958
std::unique_ptr<std::thread> scheduler_thread;
@@ -89,7 +88,7 @@ class CChainLocksHandler : public CRecoveredSigsListener
8988
public:
9089
explicit CChainLocksHandler(CChainState& chainstate, CConnman& _connman, CMasternodeSync& mn_sync, CQuorumManager& _qman,
9190
CSigningManager& _sigman, CSigSharesManager& _shareman, CSporkManager& sporkManager,
92-
CTxMemPool& _mempool, const std::unique_ptr<PeerManager>& peerman);
91+
CTxMemPool& _mempool);
9392
~CChainLocksHandler();
9493

9594
void Start();
@@ -99,8 +98,9 @@ class CChainLocksHandler : public CRecoveredSigsListener
9998
bool GetChainLockByHash(const uint256& hash, CChainLockSig& ret) const LOCKS_EXCLUDED(cs);
10099
CChainLockSig GetBestChainLock() const LOCKS_EXCLUDED(cs);
101100

102-
void ProcessMessage(const CNode& pfrom, const std::string& msg_type, CDataStream& vRecv);
103-
void ProcessNewChainLock(NodeId from, const CChainLockSig& clsig, const uint256& hash) LOCKS_EXCLUDED(cs);
101+
PeerMsgRet ProcessMessage(const CNode& pfrom, const std::string& msg_type, CDataStream& vRecv);
102+
PeerMsgRet ProcessNewChainLock(NodeId from, const CChainLockSig& clsig, const uint256& hash) LOCKS_EXCLUDED(cs);
103+
104104
void AcceptedBlockHeader(gsl::not_null<const CBlockIndex*> pindexNew) LOCKS_EXCLUDED(cs);
105105
void UpdatedBlockTip();
106106
void TransactionAddedToMempool(const CTransactionRef& tx, int64_t nAcceptTime) LOCKS_EXCLUDED(cs);

src/llmq/context.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ LLMQContext::LLMQContext(CChainState& chainstate, CConnman& connman, CEvoDB& evo
3939
shareman{std::make_unique<llmq::CSigSharesManager>(connman, *llmq::quorumManager, *sigman, peerman)},
4040
clhandler{[&]() -> llmq::CChainLocksHandler* const {
4141
assert(llmq::chainLocksHandler == nullptr);
42-
llmq::chainLocksHandler = std::make_unique<llmq::CChainLocksHandler>(chainstate, connman, *::masternodeSync, *llmq::quorumManager, *sigman, *shareman, sporkman, mempool, peerman);
42+
llmq::chainLocksHandler = std::make_unique<llmq::CChainLocksHandler>(chainstate, connman, *::masternodeSync, *llmq::quorumManager, *sigman, *shareman, sporkman, mempool);
4343
return llmq::chainLocksHandler.get();
4444
}()},
4545
isman{[&]() -> llmq::CInstantSendManager* const {

src/net_processing.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4357,7 +4357,7 @@ void PeerManagerImpl::ProcessMessage(
43574357
m_llmq_ctx->qman->ProcessMessage(pfrom, msg_type, vRecv);
43584358
m_llmq_ctx->shareman->ProcessMessage(pfrom, *sporkManager, msg_type, vRecv);
43594359
m_llmq_ctx->sigman->ProcessMessage(pfrom, msg_type, vRecv);
4360-
m_llmq_ctx->clhandler->ProcessMessage(pfrom, msg_type, vRecv);
4360+
ProcessPeerMsgRet(m_llmq_ctx->clhandler->ProcessMessage(pfrom, msg_type, vRecv), pfrom);
43614361
m_llmq_ctx->isman->ProcessMessage(pfrom, msg_type, vRecv);
43624362
return;
43634363
}

0 commit comments

Comments
 (0)