Skip to content
Merged
18 changes: 9 additions & 9 deletions src/coinjoin/client.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ std::map<const std::string, std::shared_ptr<CCoinJoinClientManager>> coinJoinCli
std::unique_ptr<CCoinJoinClientQueueManager> coinJoinClientQueueManager;


void CCoinJoinClientQueueManager::ProcessMessage(const CNode& peer, std::string_view msg_type, CDataStream& vRecv)
void CCoinJoinClientQueueManager::ProcessMessage(const CNode& peer, PeerManager& peerman, std::string_view msg_type, CDataStream& vRecv)
{
if (fMasternodeMode) return;
if (!CCoinJoinClientOptions::IsEnabled()) return;
Expand All @@ -43,17 +43,17 @@ void CCoinJoinClientQueueManager::ProcessMessage(const CNode& peer, std::string_
}

if (msg_type == NetMsgType::DSQUEUE) {
CCoinJoinClientQueueManager::ProcessDSQueue(peer, vRecv);
CCoinJoinClientQueueManager::ProcessDSQueue(peer, peerman, vRecv);
}
}

void CCoinJoinClientQueueManager::ProcessDSQueue(const CNode& peer, CDataStream& vRecv)
void CCoinJoinClientQueueManager::ProcessDSQueue(const CNode& peer, PeerManager& peerman, CDataStream& vRecv)
{
CCoinJoinQueue dsq;
vRecv >> dsq;

if (dsq.masternodeOutpoint.IsNull() && dsq.m_protxHash.IsNull()) {
Misbehaving(peer.GetId(), 100);
peerman.Misbehaving(peer.GetId(), 100);
return;
}

Expand All @@ -62,7 +62,7 @@ void CCoinJoinClientQueueManager::ProcessDSQueue(const CNode& peer, CDataStream&
if (auto dmn = mnList.GetValidMN(dsq.m_protxHash)) {
dsq.masternodeOutpoint = dmn->collateralOutpoint;
} else {
Misbehaving(peer.GetId(), 10);
peerman.Misbehaving(peer.GetId(), 10);
return;
}
}
Expand Down Expand Up @@ -97,7 +97,7 @@ void CCoinJoinClientQueueManager::ProcessDSQueue(const CNode& peer, CDataStream&
}

if (!dsq.CheckSignature(dmn->pdmnState->pubKeyOperator.Get())) {
Misbehaving(peer.GetId(), 10);
peerman.Misbehaving(peer.GetId(), 10);
return;
}

Expand Down Expand Up @@ -130,7 +130,7 @@ void CCoinJoinClientQueueManager::ProcessDSQueue(const CNode& peer, CDataStream&
}
}

void CCoinJoinClientManager::ProcessMessage(CNode& peer, CConnman& connman, const CTxMemPool& mempool, std::string_view msg_type, CDataStream& vRecv)
void CCoinJoinClientManager::ProcessMessage(CNode& peer, PeerManager& peerman, CConnman& connman, const CTxMemPool& mempool, std::string_view msg_type, CDataStream& vRecv)
{
if (fMasternodeMode) return;
if (!CCoinJoinClientOptions::IsEnabled()) return;
Expand All @@ -149,12 +149,12 @@ void CCoinJoinClientManager::ProcessMessage(CNode& peer, CConnman& connman, cons
AssertLockNotHeld(cs_deqsessions);
LOCK(cs_deqsessions);
for (auto& session : deqSessions) {
session.ProcessMessage(peer, connman, mempool, msg_type, vRecv);
session.ProcessMessage(peer, peerman, connman, mempool, msg_type, vRecv);
}
}
}

void CCoinJoinClientSession::ProcessMessage(CNode& peer, CConnman& connman, const CTxMemPool& mempool, std::string_view msg_type, CDataStream& vRecv)
void CCoinJoinClientSession::ProcessMessage(CNode& peer, PeerManager& peerman, CConnman& connman, const CTxMemPool& mempool, std::string_view msg_type, CDataStream& vRecv)
{
if (fMasternodeMode) return;
if (!CCoinJoinClientOptions::IsEnabled()) return;
Expand Down
9 changes: 5 additions & 4 deletions src/coinjoin/client.h
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ class CBlockPolicyEstimator;
class CConnman;
class CNode;
class CTxMemPool;
class PeerManager;

class UniValue;
class CMasternodeSync;
Expand Down Expand Up @@ -128,7 +129,7 @@ class CCoinJoinClientSession : public CCoinJoinBaseSession
{
}

void ProcessMessage(CNode& peer, CConnman& connman, const CTxMemPool& mempool, std::string_view msg_type, CDataStream& vRecv);
void ProcessMessage(CNode& peer, PeerManager& peerman, CConnman& connman, const CTxMemPool& mempool, std::string_view msg_type, CDataStream& vRecv);

void UnlockCoins();

Expand Down Expand Up @@ -163,8 +164,8 @@ class CCoinJoinClientQueueManager : public CCoinJoinBaseManager
explicit CCoinJoinClientQueueManager(CConnman& _connman, const std::unique_ptr<CMasternodeSync>& mn_sync) :
connman(_connman), m_mn_sync(mn_sync) {};

void ProcessMessage(const CNode& peer, std::string_view msg_type, CDataStream& vRecv) LOCKS_EXCLUDED(cs_vecqueue);
void ProcessDSQueue(const CNode& peer, CDataStream& vRecv);
void ProcessMessage(const CNode& peer, PeerManager& peerman, std::string_view msg_type, CDataStream& vRecv) LOCKS_EXCLUDED(cs_vecqueue);
void ProcessDSQueue(const CNode& peer, PeerManager& peerman, CDataStream& vRecv);
void DoMaintenance();
};

Expand Down Expand Up @@ -209,7 +210,7 @@ class CCoinJoinClientManager
explicit CCoinJoinClientManager(CWallet& wallet, const std::unique_ptr<CMasternodeSync>& mn_sync) :
m_mn_sync(mn_sync), mixingWallet(wallet) {}

void ProcessMessage(CNode& peer, CConnman& connman, const CTxMemPool& mempool, std::string_view msg_type, CDataStream& vRecv) LOCKS_EXCLUDED(cs_deqsessions);
void ProcessMessage(CNode& peer, PeerManager& peerman, CConnman& connman, const CTxMemPool& mempool, std::string_view msg_type, CDataStream& vRecv) LOCKS_EXCLUDED(cs_deqsessions);

bool StartMixing();
void StopMixing();
Expand Down
12 changes: 6 additions & 6 deletions src/coinjoin/server.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -26,15 +26,15 @@
std::unique_ptr<CCoinJoinServer> coinJoinServer;
constexpr static CAmount DEFAULT_MAX_RAW_TX_FEE{COIN / 10};

void CCoinJoinServer::ProcessMessage(CNode& peer, std::string_view msg_type, CDataStream& vRecv)
void CCoinJoinServer::ProcessMessage(CNode& peer, PeerManager& peerman, std::string_view msg_type, CDataStream& vRecv)
{
if (!fMasternodeMode) return;
if (!m_mn_sync->IsBlockchainSynced()) return;

if (msg_type == NetMsgType::DSACCEPT) {
ProcessDSACCEPT(peer, vRecv);
} else if (msg_type == NetMsgType::DSQUEUE) {
ProcessDSQUEUE(peer, vRecv);
ProcessDSQUEUE(peer, peerman, vRecv);
} else if (msg_type == NetMsgType::DSVIN) {
ProcessDSVIN(peer, vRecv);
} else if (msg_type == NetMsgType::DSSIGNFINALTX) {
Expand Down Expand Up @@ -107,13 +107,13 @@ void CCoinJoinServer::ProcessDSACCEPT(CNode& peer, CDataStream& vRecv)
}
}

void CCoinJoinServer::ProcessDSQUEUE(const CNode& peer, CDataStream& vRecv)
void CCoinJoinServer::ProcessDSQUEUE(const CNode& peer, PeerManager& peerman, CDataStream& vRecv)
{
CCoinJoinQueue dsq;
vRecv >> dsq;

if (dsq.masternodeOutpoint.IsNull() && dsq.m_protxHash.IsNull()) {
Misbehaving(peer.GetId(), 100);
peerman.Misbehaving(peer.GetId(), 100);
return;
}

Expand All @@ -122,7 +122,7 @@ void CCoinJoinServer::ProcessDSQUEUE(const CNode& peer, CDataStream& vRecv)
if (auto dmn = mnList.GetValidMN(dsq.m_protxHash)) {
dsq.masternodeOutpoint = dmn->collateralOutpoint;
} else {
Misbehaving(peer.GetId(), 10);
peerman.Misbehaving(peer.GetId(), 10);
return;
}
}
Expand Down Expand Up @@ -157,7 +157,7 @@ void CCoinJoinServer::ProcessDSQUEUE(const CNode& peer, CDataStream& vRecv)
}

if (!dsq.CheckSignature(dmn->pdmnState->pubKeyOperator.Get())) {
Misbehaving(peer.GetId(), 10);
peerman.Misbehaving(peer.GetId(), 10);
return;
}

Expand Down
6 changes: 4 additions & 2 deletions src/coinjoin/server.h
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@

class CCoinJoinServer;
class CTxMemPool;
class PeerManager;

class UniValue;

// The main object for accessing mixing
Expand Down Expand Up @@ -70,7 +72,7 @@ class CCoinJoinServer : public CCoinJoinBaseSession, public CCoinJoinBaseManager
void RelayCompletedTransaction(PoolMessage nMessageID) LOCKS_EXCLUDED(cs_coinjoin);

void ProcessDSACCEPT(CNode& peer, CDataStream& vRecv) LOCKS_EXCLUDED(cs_vecqueue);
void ProcessDSQUEUE(const CNode& peer, CDataStream& vRecv) LOCKS_EXCLUDED(cs_vecqueue);
void ProcessDSQUEUE(const CNode& peer, PeerManager& peerman, CDataStream& vRecv) LOCKS_EXCLUDED(cs_vecqueue);
void ProcessDSVIN(CNode& peer, CDataStream& vRecv) LOCKS_EXCLUDED(cs_coinjoin);
void ProcessDSSIGNFINALTX(CDataStream& vRecv) LOCKS_EXCLUDED(cs_coinjoin);

Expand All @@ -85,7 +87,7 @@ class CCoinJoinServer : public CCoinJoinBaseSession, public CCoinJoinBaseManager
fUnitTest(false)
{}

void ProcessMessage(CNode& pfrom, std::string_view msg_type, CDataStream& vRecv);
void ProcessMessage(CNode& pfrom, PeerManager& peerman, std::string_view msg_type, CDataStream& vRecv);

bool HasTimedOut() const;
void CheckTimeout();
Expand Down
14 changes: 7 additions & 7 deletions src/evo/mnauth.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ void CMNAuth::PushMNAUTH(CNode& peer, CConnman& connman, const CBlockIndex* tip)
connman.PushMessage(&peer, CNetMsgMaker(peer.GetSendVersion()).Make(NetMsgType::MNAUTH, mnauth));
}

void CMNAuth::ProcessMessage(CNode& peer, CConnman& connman, std::string_view msg_type, CDataStream& vRecv)
void CMNAuth::ProcessMessage(CNode& peer, PeerManager& peerman, CConnman& connman, std::string_view msg_type, CDataStream& vRecv)
{
if (msg_type != NetMsgType::MNAUTH || !::masternodeSync->IsBlockchainSynced()) {
// we can't verify MNAUTH messages when we don't have the latest MN list
Expand All @@ -70,23 +70,23 @@ void CMNAuth::ProcessMessage(CNode& peer, CConnman& connman, std::string_view ms

// only one MNAUTH allowed
if (!peer.GetVerifiedProRegTxHash().IsNull()) {
Misbehaving(peer.GetId(), 100, "duplicate mnauth");
peerman.Misbehaving(peer.GetId(), 100, "duplicate mnauth");
return;
}

if ((~peer.nServices) & (NODE_NETWORK | NODE_BLOOM)) {
// either NODE_NETWORK or NODE_BLOOM bit is missing in node's services
Misbehaving(peer.GetId(), 100, "mnauth from a node with invalid services");
peerman.Misbehaving(peer.GetId(), 100, "mnauth from a node with invalid services");
return;
}

if (mnauth.proRegTxHash.IsNull()) {
Misbehaving(peer.GetId(), 100, "empty mnauth proRegTxHash");
peerman.Misbehaving(peer.GetId(), 100, "empty mnauth proRegTxHash");
return;
}

if (!mnauth.sig.IsValid()) {
Misbehaving(peer.GetId(), 100, "invalid mnauth signature");
peerman.Misbehaving(peer.GetId(), 100, "invalid mnauth signature");
LogPrint(BCLog::NET_NETCONN, "CMNAuth::ProcessMessage -- invalid mnauth for protx=%s with sig=%s\n", mnauth.proRegTxHash.ToString(), mnauth.sig.ToString());
return;
}
Expand All @@ -97,7 +97,7 @@ void CMNAuth::ProcessMessage(CNode& peer, CConnman& connman, std::string_view ms
// in case node was unlucky and not up to date, just let it be connected as a regular node, which gives it
// a chance to get up-to-date and thus realize that it's not a MN anymore. We still give it a
// low DoS score.
Misbehaving(peer.GetId(), 10, "missing mnauth masternode");
peerman.Misbehaving(peer.GetId(), 10, "missing mnauth masternode");
return;
}

Expand All @@ -120,7 +120,7 @@ void CMNAuth::ProcessMessage(CNode& peer, CConnman& connman, std::string_view ms
if (!mnauth.sig.VerifyInsecure(dmn->pdmnState->pubKeyOperator.Get(), signHash)) {
// Same as above, MN seems to not know its fate yet, so give it a chance to update. If this is a
// malicious node (DoSing us), it'll get banned soon.
Misbehaving(peer.GetId(), 10, "mnauth signature verification failed");
peerman.Misbehaving(peer.GetId(), 10, "mnauth signature verification failed");
return;
}

Expand Down
6 changes: 4 additions & 2 deletions src/evo/mnauth.h
Original file line number Diff line number Diff line change
Expand Up @@ -8,14 +8,16 @@
#include <bls/bls.h>
#include <serialize.h>

class CBlockIndex;
class CConnman;
class CDataStream;
class CDeterministicMN;
class CDeterministicMNList;
class CDeterministicMNListDiff;
class CNode;
class PeerManager;

class UniValue;
class CBlockIndex;

/**
* This class handles the p2p message MNAUTH. MNAUTH is sent directly after VERACK and authenticates the sender as a
Expand Down Expand Up @@ -46,7 +48,7 @@ class CMNAuth
}

static void PushMNAUTH(CNode& peer, CConnman& connman, const CBlockIndex* tip);
static void ProcessMessage(CNode& peer, CConnman& connman, std::string_view msg_type, CDataStream& vRecv);
static void ProcessMessage(CNode& peer, PeerManager& peerman, CConnman& connman, std::string_view msg_type, CDataStream& vRecv);
static void NotifyMasternodeListChanged(bool undo, const CDeterministicMNList& oldMNList, const CDeterministicMNListDiff& diff, CConnman& connman);
};

Expand Down
12 changes: 6 additions & 6 deletions src/governance/governance.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@ bool CGovernanceManager::SerializeVoteForHash(const uint256& nHash, CDataStream&
return cmapVoteToObject.Get(nHash, pGovobj) && pGovobj->GetVoteFile().SerializeVoteToStream(nHash, ss);
}

void CGovernanceManager::ProcessMessage(CNode& peer, CConnman& connman, std::string_view msg_type, CDataStream& vRecv)
void CGovernanceManager::ProcessMessage(CNode& peer, PeerManager& peerman, CConnman& connman, std::string_view msg_type, CDataStream& vRecv)
{
if (fDisableGovernance) return;
if (::masternodeSync == nullptr || !::masternodeSync->IsBlockchainSynced()) return;
Expand All @@ -107,7 +107,7 @@ void CGovernanceManager::ProcessMessage(CNode& peer, CConnman& connman, std::str
vRecv >> filter;

if (nProp == uint256()) {
SyncObjects(peer, connman);
SyncObjects(peer, peerman, connman);
} else {
SyncSingleObjVotes(peer, nProp, filter, connman);
}
Expand Down Expand Up @@ -174,7 +174,7 @@ void CGovernanceManager::ProcessMessage(CNode& peer, CConnman& connman, std::str
} else {
LogPrint(BCLog::GOBJECT, "MNGOVERNANCEOBJECT -- Governance object is invalid - %s\n", strError);
// apply node's ban score
Misbehaving(peer.GetId(), 20);
peerman.Misbehaving(peer.GetId(), 20);
}

return;
Expand Down Expand Up @@ -219,7 +219,7 @@ void CGovernanceManager::ProcessMessage(CNode& peer, CConnman& connman, std::str
} else {
LogPrint(BCLog::GOBJECT, "MNGOVERNANCEOBJECTVOTE -- Rejected vote, error = %s\n", exception.what());
if ((exception.GetNodePenalty() != 0) && ::masternodeSync->IsSynced()) {
Misbehaving(peer.GetId(), exception.GetNodePenalty());
peerman.Misbehaving(peer.GetId(), exception.GetNodePenalty());
}
return;
}
Expand Down Expand Up @@ -617,15 +617,15 @@ void CGovernanceManager::SyncSingleObjVotes(CNode& peer, const uint256& nProp, c
LogPrint(BCLog::GOBJECT, "CGovernanceManager::%s -- sent %d votes to peer=%d\n", __func__, nVoteCount, peer.GetId());
}

void CGovernanceManager::SyncObjects(CNode& peer, CConnman& connman) const
void CGovernanceManager::SyncObjects(CNode& peer, PeerManager& peerman, CConnman& connman) const
{
// do not provide any data until our node is synced
if (!::masternodeSync->IsSynced()) return;

if (netfulfilledman.HasFulfilledRequest(peer.addr, NetMsgType::MNGOVERNANCESYNC)) {
// Asking for the whole list multiple times in a short period of time is no good
LogPrint(BCLog::GOBJECT, "CGovernanceManager::%s -- peer already asked me for the list\n", __func__);
Misbehaving(peer.GetId(), 20);
peerman.Misbehaving(peer.GetId(), 20);
return;
}
netfulfilledman.AddFulfilledRequest(peer.addr, NetMsgType::MNGOVERNANCESYNC);
Expand Down
5 changes: 3 additions & 2 deletions src/governance/governance.h
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ class CGovernanceTriggerManager;
class CGovernanceObject;
class CGovernanceVote;
class CSporkManager;
class PeerManager;

extern std::unique_ptr<CGovernanceManager> governance;

Expand Down Expand Up @@ -231,9 +232,9 @@ class CGovernanceManager
bool ConfirmInventoryRequest(const CInv& inv);

void SyncSingleObjVotes(CNode& peer, const uint256& nProp, const CBloomFilter& filter, CConnman& connman);
void SyncObjects(CNode& peer, CConnman& connman) const;
void SyncObjects(CNode& peer, PeerManager& peerman, CConnman& connman) const;

void ProcessMessage(CNode& peer, CConnman& connman, std::string_view msg_type, CDataStream& vRecv);
void ProcessMessage(CNode& peer, PeerManager& peerman, CConnman& connman, std::string_view msg_type, CDataStream& vRecv);

void DoMaintenance(CConnman& connman);

Expand Down
Loading