Skip to content

Commit 1681eb8

Browse files
knstPastaPastaPasta
authored andcommitted
refactor: coinjoin/client no more depends on net_processing
1 parent 051cdb3 commit 1681eb8

File tree

3 files changed

+23
-22
lines changed

3 files changed

+23
-22
lines changed

src/coinjoin/client.cpp

Lines changed: 17 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
#include <evo/deterministicmns.h>
1212
#include <masternode/meta.h>
1313
#include <masternode/sync.h>
14-
#include <net_processing.h>
14+
#include <net.h>
1515
#include <netmessagemaker.h>
1616
#include <shutdown.h>
1717
#include <util/check.h>
@@ -29,33 +29,32 @@
2929
#include <memory>
3030
#include <univalue.h>
3131

32-
void CCoinJoinClientQueueManager::ProcessMessage(const CNode& peer, PeerManager& peerman, std::string_view msg_type, CDataStream& vRecv)
32+
PeerMsgRet CCoinJoinClientQueueManager::ProcessMessage(const CNode& peer, std::string_view msg_type, CDataStream& vRecv)
3333
{
34-
if (fMasternodeMode) return;
35-
if (!m_mn_sync.IsBlockchainSynced()) return;
34+
if (fMasternodeMode) return {};
35+
if (!m_mn_sync.IsBlockchainSynced()) return {};
3636

3737
if (msg_type == NetMsgType::DSQUEUE) {
38-
CCoinJoinClientQueueManager::ProcessDSQueue(peer, peerman, vRecv);
38+
return CCoinJoinClientQueueManager::ProcessDSQueue(peer, vRecv);
3939
}
40+
return {};
4041
}
4142

42-
void CCoinJoinClientQueueManager::ProcessDSQueue(const CNode& peer, PeerManager& peerman, CDataStream& vRecv)
43+
PeerMsgRet CCoinJoinClientQueueManager::ProcessDSQueue(const CNode& peer, CDataStream& vRecv)
4344
{
4445
CCoinJoinQueue dsq;
4546
vRecv >> dsq;
4647

4748
if (dsq.masternodeOutpoint.IsNull() && dsq.m_protxHash.IsNull()) {
48-
peerman.Misbehaving(peer.GetId(), 100);
49-
return;
49+
return tl::unexpected{100};
5050
}
5151

5252
if (dsq.masternodeOutpoint.IsNull()) {
5353
auto mnList = deterministicMNManager->GetListAtChainTip();
5454
if (auto dmn = mnList.GetValidMN(dsq.m_protxHash)) {
5555
dsq.masternodeOutpoint = dmn->collateralOutpoint;
5656
} else {
57-
peerman.Misbehaving(peer.GetId(), 10);
58-
return;
57+
return tl::unexpected{10};
5958
}
6059
}
6160

@@ -67,33 +66,32 @@ void CCoinJoinClientQueueManager::ProcessDSQueue(const CNode& peer, PeerManager&
6766
// process every dsq only once
6867
for (const auto &q: vecCoinJoinQueue) {
6968
if (q == dsq) {
70-
return;
69+
return {};
7170
}
7271
if (q.fReady == dsq.fReady && q.masternodeOutpoint == dsq.masternodeOutpoint) {
7372
// no way the same mn can send another dsq with the same readiness this soon
7473
LogPrint(BCLog::COINJOIN, /* Continued */
7574
"DSQUEUE -- Peer %s is sending WAY too many dsq messages for a masternode with collateral %s\n",
7675
peer.GetLogString(), dsq.masternodeOutpoint.ToStringShort());
77-
return;
76+
return {};
7877
}
7978
}
8079
} // cs_vecqueue
8180

8281
LogPrint(BCLog::COINJOIN, "DSQUEUE -- %s new\n", dsq.ToString());
8382

84-
if (dsq.IsTimeOutOfBounds()) return;
83+
if (dsq.IsTimeOutOfBounds()) return {};
8584

8685
auto mnList = deterministicMNManager->GetListAtChainTip();
8786
auto dmn = mnList.GetValidMNByCollateral(dsq.masternodeOutpoint);
88-
if (!dmn) return;
87+
if (!dmn) return {};
8988

9089
if (dsq.m_protxHash.IsNull()) {
9190
dsq.m_protxHash = dmn->proTxHash;
9291
}
9392

9493
if (!dsq.CheckSignature(dmn->pdmnState->pubKeyOperator.Get())) {
95-
peerman.Misbehaving(peer.GetId(), 10);
96-
return;
94+
return tl::unexpected{10};
9795
}
9896

9997
// if the queue is ready, submit if we can
@@ -104,7 +102,7 @@ void CCoinJoinClientQueueManager::ProcessDSQueue(const CNode& peer, PeerManager&
104102
})) {
105103
LogPrint(BCLog::COINJOIN, "DSQUEUE -- CoinJoin queue (%s) is ready on masternode %s\n", dsq.ToString(),
106104
dmn->pdmnState->addr.ToString());
107-
return;
105+
return {};
108106
} else {
109107
int64_t nLastDsq = mmetaman->GetMetaInfo(dmn->proTxHash)->GetLastDsq();
110108
int64_t nDsqThreshold = mmetaman->GetDsqThreshold(dmn->proTxHash, mnList.GetValidMNsCount());
@@ -114,7 +112,7 @@ void CCoinJoinClientQueueManager::ProcessDSQueue(const CNode& peer, PeerManager&
114112
if (nLastDsq != 0 && nDsqThreshold > mmetaman->GetDsqCount()) {
115113
LogPrint(BCLog::COINJOIN, "DSQUEUE -- Masternode %s is sending too many dsq messages\n",
116114
dmn->proTxHash.ToString());
117-
return;
115+
return {};
118116
}
119117

120118
mmetaman->AllowMixing(dmn->proTxHash);
@@ -129,6 +127,7 @@ void CCoinJoinClientQueueManager::ProcessDSQueue(const CNode& peer, PeerManager&
129127
}
130128
} // cs_ProcessDSQueue
131129
dsq.Relay(connman);
130+
return {};
132131
}
133132

134133
void CCoinJoinClientManager::ProcessMessage(CNode& peer, CConnman& connman, const CTxMemPool& mempool, std::string_view msg_type, CDataStream& vRecv)

src/coinjoin/client.h

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77

88
#include <coinjoin/util.h>
99
#include <coinjoin/coinjoin.h>
10+
11+
#include <net_types.h>
1012
#include <util/translation.h>
1113

1214
#include <atomic>
@@ -23,7 +25,6 @@ class CoinJoinWalletManager;
2325
class CNode;
2426
class CMasternodeSync;
2527
class CTxMemPool;
26-
class PeerManager;
2728

2829
class UniValue;
2930

@@ -196,8 +197,8 @@ class CCoinJoinClientQueueManager : public CCoinJoinBaseManager
196197
explicit CCoinJoinClientQueueManager(CConnman& _connman, CoinJoinWalletManager& walletman, const CMasternodeSync& mn_sync) :
197198
connman(_connman), m_walletman(walletman), m_mn_sync(mn_sync) {};
198199

199-
void ProcessMessage(const CNode& peer, PeerManager& peerman, std::string_view msg_type, CDataStream& vRecv) LOCKS_EXCLUDED(cs_vecqueue);
200-
void ProcessDSQueue(const CNode& peer, PeerManager& peerman, CDataStream& vRecv);
200+
PeerMsgRet ProcessMessage(const CNode& peer, std::string_view msg_type, CDataStream& vRecv) LOCKS_EXCLUDED(cs_vecqueue);
201+
PeerMsgRet ProcessDSQueue(const CNode& peer, CDataStream& vRecv);
201202
void DoMaintenance();
202203
};
203204

src/net_processing.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
#include <merkleblock.h>
1818
#include <netmessagemaker.h>
1919
#include <netbase.h>
20+
#include <net_types.h>
2021
#include <node/blockstorage.h>
2122
#include <policy/policy.h>
2223
#include <primitives/block.h>
@@ -4341,7 +4342,7 @@ void PeerManagerImpl::ProcessMessage(
43414342
{
43424343
//probably one the extensions
43434344
#ifdef ENABLE_WALLET
4344-
m_cj_ctx->queueman->ProcessMessage(pfrom, *this, msg_type, vRecv);
4345+
ProcessPeerMsgRet(m_cj_ctx->queueman->ProcessMessage(pfrom, msg_type, vRecv), pfrom);
43454346
for (auto& pair : m_cj_ctx->walletman->raw()) {
43464347
pair.second->ProcessMessage(pfrom, m_connman, m_mempool, msg_type, vRecv);
43474348
}

0 commit comments

Comments
 (0)