Skip to content

Commit ebff21f

Browse files
committed
refactor: drop dependency of EhfSignals on PeerManager
1 parent 1d13f01 commit ebff21f

File tree

6 files changed

+14
-13
lines changed

6 files changed

+14
-13
lines changed

src/llmq/context.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,8 @@ 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 {
@@ -45,7 +46,7 @@ LLMQContext::LLMQContext(CChainState& chainstate, CConnman& connman, CDeterminis
4546
return llmq::quorumInstantSendManager.get();
4647
}()},
4748
ehfSignalsHandler{
48-
std::make_unique<llmq::CEHFSignalsHandler>(chainstate, mnhfman, *sigman, *shareman, mempool, *qman, peerman)}
49+
std::make_unique<llmq::CEHFSignalsHandler>(chainstate, mnhfman, *sigman, *shareman, mempool, *qman)}
4950
{
5051
}
5152

src/llmq/ehf_signals.cpp

Lines changed: 4 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 <txmempool.h>
2019
#include <validation.h>
@@ -23,15 +22,13 @@ namespace llmq {
2322

2423

2524
CEHFSignalsHandler::CEHFSignalsHandler(CChainState& chainstate, CMNHFManager& mnhfman, CSigningManager& sigman,
26-
CSigSharesManager& shareman, CTxMemPool& mempool, const CQuorumManager& qman,
27-
const std::unique_ptr<PeerManager>& peerman) :
25+
CSigSharesManager& shareman, CTxMemPool& mempool, const CQuorumManager& qman) :
2826
chainstate(chainstate),
2927
mnhfman(mnhfman),
3028
sigman(sigman),
3129
shareman(shareman),
3230
mempool(mempool),
3331
qman(qman),
34-
m_peerman(peerman)
3532
{
3633
sigman.RegisterRecoveredSigsListener(this);
3734
}
@@ -105,6 +102,7 @@ MessageProcessingResult CEHFSignalsHandler::HandleNewRecoveredSig(const CRecover
105102
return {};
106103
}
107104

105+
MessageProcessingResult ret;
108106
const auto ehfSignals = mnhfman.GetSignalsStage(WITH_LOCK(cs_main, return chainstate.m_chain.Tip()));
109107
MNHFTxPayload mnhfPayload;
110108
for (const auto& deployment : Params().GetConsensus().vDeployments) {
@@ -130,13 +128,13 @@ MessageProcessingResult CEHFSignalsHandler::HandleNewRecoveredSig(const CRecover
130128
LOCK(cs_main);
131129
const MempoolAcceptResult result = AcceptToMemoryPool(chainstate, mempool, tx_to_sent, /* bypass_limits */ false);
132130
if (result.m_result_type == MempoolAcceptResult::ResultType::VALID) {
133-
Assert(m_peerman)->RelayTransaction(tx_to_sent->GetHash());
131+
ret.m_transactions.push_back(tx_to_sent->GetHash());
134132
} else {
135133
LogPrintf("CEHFSignalsHandler::HandleNewRecoveredSig -- AcceptToMemoryPool failed: %s\n", result.m_state.ToString());
136134
}
137135
}
138136
break;
139137
}
140-
return {};
138+
return ret;
141139
}
142140
} // namespace llmq

src/llmq/ehf_signals.h

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@ class CBlockIndex;
1313
class CChainState;
1414
class CMNHFManager;
1515
class CTxMemPool;
16-
class PeerManager;
1716

1817
namespace llmq
1918
{
@@ -30,7 +29,6 @@ class CEHFSignalsHandler : public CRecoveredSigsListener
3029
CSigSharesManager& shareman;
3130
CTxMemPool& mempool;
3231
const CQuorumManager& qman;
33-
const std::unique_ptr<PeerManager>& m_peerman;
3432

3533
/**
3634
* keep freshly generated IDs for easier filter sigs in HandleNewRecoveredSig
@@ -39,8 +37,8 @@ class CEHFSignalsHandler : public CRecoveredSigsListener
3937
std::set<uint256> ids GUARDED_BY(cs);
4038
public:
4139
explicit CEHFSignalsHandler(CChainState& chainstate, CMNHFManager& mnhfman, CSigningManager& sigman,
42-
CSigSharesManager& shareman, CTxMemPool& mempool, const CQuorumManager& qman,
43-
const std::unique_ptr<PeerManager>& peerman);
40+
CSigSharesManager& shareman, CTxMemPool& mempool, const CQuorumManager& qman);
41+
4442
~CEHFSignalsHandler();
4543

4644

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)