Skip to content

Commit 5e489bc

Browse files
committed
refactor: drop dependency of EhfSignals on PeerManager
1 parent 595c4cd commit 5e489bc

File tree

6 files changed

+15
-13
lines changed

6 files changed

+15
-13
lines changed

src/llmq/context.cpp

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,16 +36,17 @@ LLMQContext::LLMQContext(CChainState& chainstate, CConnman& connman, CDeterminis
3636
shareman{std::make_unique<llmq::CSigSharesManager>(connman, *sigman, mn_activeman, *qman, sporkman, peerman)},
3737
clhandler{[&]() -> llmq::CChainLocksHandler* const {
3838
assert(llmq::chainLocksHandler == nullptr);
39-
llmq::chainLocksHandler = std::make_unique<llmq::CChainLocksHandler>(chainstate, *qman, *sigman, *shareman, sporkman, mempool, mn_sync, is_masternode);
39+
llmq::chainLocksHandler = std::make_unique<llmq::CChainLocksHandler>(chainstate, *qman, *sigman, *shareman,
40+
sporkman, mempool, mn_sync, is_masternode);
4041
return llmq::chainLocksHandler.get();
4142
}()},
4243
isman{[&]() -> llmq::CInstantSendManager* const {
4344
assert(llmq::quorumInstantSendManager == nullptr);
4445
llmq::quorumInstantSendManager = std::make_unique<llmq::CInstantSendManager>(*llmq::chainLocksHandler, chainstate, connman, *qman, *sigman, *shareman, sporkman, mempool, mn_sync, peerman, is_masternode, unit_tests, wipe);
4546
return llmq::quorumInstantSendManager.get();
4647
}()},
47-
ehfSignalsHandler{std::make_unique<llmq::CEHFSignalsHandler>(chainstate, mnhfman, *sigman, *shareman, mempool,
48-
*qman, sporkman, peerman)}
48+
ehfSignalsHandler{
49+
std::make_unique<llmq::CEHFSignalsHandler>(chainstate, mnhfman, *sigman, *shareman, mempool, *qman, sporkman)}
4950
{
5051
}
5152

src/llmq/ehf_signals.cpp

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@
1414
#include <consensus/validation.h>
1515
#include <deploymentstatus.h>
1616
#include <index/txindex.h> // g_txindex
17-
#include <net_processing.h>
1817
#include <primitives/transaction.h>
1918
#include <spork.h>
2019
#include <txmempool.h>
@@ -25,15 +24,14 @@ namespace llmq {
2524

2625
CEHFSignalsHandler::CEHFSignalsHandler(CChainState& chainstate, CMNHFManager& mnhfman, CSigningManager& sigman,
2726
CSigSharesManager& shareman, CTxMemPool& mempool, const CQuorumManager& qman,
28-
const CSporkManager& sporkman, const std::unique_ptr<PeerManager>& peerman) :
27+
const CSporkManager& sporkman) :
2928
chainstate(chainstate),
3029
mnhfman(mnhfman),
3130
sigman(sigman),
3231
shareman(shareman),
3332
mempool(mempool),
3433
qman(qman),
35-
sporkman(sporkman),
36-
m_peerman(peerman)
34+
sporkman(sporkman)
3735
{
3836
sigman.RegisterRecoveredSigsListener(this);
3937
}
@@ -107,6 +105,7 @@ MessageProcessingResult CEHFSignalsHandler::HandleNewRecoveredSig(const CRecover
107105
return {};
108106
}
109107

108+
MessageProcessingResult ret;
110109
const auto ehfSignals = mnhfman.GetSignalsStage(WITH_LOCK(cs_main, return chainstate.m_chain.Tip()));
111110
for (const auto& deployment : Params().GetConsensus().vDeployments) {
112111
// skip deployments that do not use dip0023 or that have already been mined
@@ -132,12 +131,12 @@ MessageProcessingResult CEHFSignalsHandler::HandleNewRecoveredSig(const CRecover
132131
LOCK(cs_main);
133132
const MempoolAcceptResult result = AcceptToMemoryPool(chainstate, mempool, tx_to_sent, /* bypass_limits */ false);
134133
if (result.m_result_type == MempoolAcceptResult::ResultType::VALID) {
135-
Assert(m_peerman)->RelayTransaction(tx_to_sent->GetHash());
134+
ret.m_transactions.push_back(tx_to_sent->GetHash());
136135
} else {
137136
LogPrintf("CEHFSignalsHandler::HandleNewRecoveredSig -- AcceptToMemoryPool failed: %s\n", result.m_state.ToString());
138137
}
139138
}
140139
}
141-
return {};
140+
return ret;
142141
}
143142
} // namespace llmq

src/llmq/ehf_signals.h

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@ class CChainState;
1414
class CMNHFManager;
1515
class CSporkManager;
1616
class CTxMemPool;
17-
class PeerManager;
1817

1918
namespace llmq
2019
{
@@ -32,7 +31,6 @@ class CEHFSignalsHandler : public CRecoveredSigsListener
3231
CTxMemPool& mempool;
3332
const CQuorumManager& qman;
3433
const CSporkManager& sporkman;
35-
const std::unique_ptr<PeerManager>& m_peerman;
3634

3735
/**
3836
* keep freshly generated IDs for easier filter sigs in HandleNewRecoveredSig
@@ -42,7 +40,7 @@ class CEHFSignalsHandler : public CRecoveredSigsListener
4240
public:
4341
explicit CEHFSignalsHandler(CChainState& chainstate, CMNHFManager& mnhfman, CSigningManager& sigman,
4442
CSigSharesManager& shareman, CTxMemPool& mempool, const CQuorumManager& qman,
45-
const CSporkManager& sporkman, const std::unique_ptr<PeerManager>& peerman);
43+
const CSporkManager& sporkman);
4644
~CEHFSignalsHandler();
4745

4846

src/net_processing.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3318,6 +3318,9 @@ void PeerManagerImpl::PostProcessMessage(MessageProcessingResult&& result, NodeI
33183318
if (result.m_to_erase) {
33193319
WITH_LOCK(cs_main, EraseObjectRequest(node, result.m_to_erase.value()));
33203320
}
3321+
for (const auto& tx : result.m_transactions) {
3322+
WITH_LOCK(cs_main, RelayTransaction(tx));
3323+
}
33213324
if (result.m_inventory) {
33223325
RelayInv(result.m_inventory.value(), MIN_PEER_PROTO_VERSION);
33233326
}

src/protocol.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -585,6 +585,7 @@ struct MessageProcessingResult
585585
{
586586
std::optional<MisbehavingError> m_error;
587587
std::optional<CInv> m_inventory;
588+
std::vector<uint256> m_transactions;
588589
std::optional<CInv> m_to_erase;
589590

590591
MessageProcessingResult() = default;

test/lint/lint-circular-dependencies.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ EXPECTED_CIRCULAR_DEPENDENCIES=(
8888
"coinjoin/client -> net_processing -> coinjoin/context -> coinjoin/client"
8989
"coinjoin/context -> coinjoin/server -> net_processing -> coinjoin/context"
9090
"coinjoin/server -> net_processing -> coinjoin/server"
91-
"llmq/context -> llmq/ehf_signals -> net_processing -> llmq/context"
91+
"llmq/context -> llmq/instantsend -> net_processing -> llmq/context"
9292
"llmq/chainlocks -> llmq/instantsend -> net_processing -> llmq/chainlocks"
9393
"net_processing -> spork -> net_processing"
9494
"governance/governance -> net_processing -> governance/governance"

0 commit comments

Comments
 (0)