Skip to content

Commit 08d1b35

Browse files
knstPastaPastaPasta
authored andcommitted
refactor: spork no more depends on net_processing
1 parent 91eca51 commit 08d1b35

File tree

3 files changed

+13
-14
lines changed

3 files changed

+13
-14
lines changed

src/net_processing.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4348,7 +4348,7 @@ void PeerManagerImpl::ProcessMessage(
43484348
}
43494349
#endif // ENABLE_WALLET
43504350
ProcessPeerMsgRet(m_cj_ctx->server->ProcessMessage(pfrom, msg_type, vRecv), pfrom);
4351-
sporkManager->ProcessMessage(pfrom, *this, m_connman, msg_type, vRecv);
4351+
ProcessPeerMsgRet(sporkManager->ProcessMessage(pfrom, m_connman, msg_type, vRecv), pfrom);
43524352
::masternodeSync->ProcessMessage(pfrom, msg_type, vRecv);
43534353
m_govman.ProcessMessage(pfrom, *this, m_connman, msg_type, vRecv);
43544354
CMNAuth::ProcessMessage(pfrom, *this, m_connman, msg_type, vRecv);

src/spork.cpp

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111
#include <logging.h>
1212
#include <messagesigner.h>
1313
#include <net.h>
14-
#include <net_processing.h>
1514
#include <netmessagemaker.h>
1615
#include <primitives/block.h>
1716
#include <protocol.h>
@@ -130,16 +129,17 @@ void CSporkManager::CheckAndRemove()
130129
}
131130
}
132131

133-
void CSporkManager::ProcessMessage(CNode& peer, PeerManager& peerman, CConnman& connman, std::string_view msg_type, CDataStream& vRecv)
132+
PeerMsgRet CSporkManager::ProcessMessage(CNode& peer, CConnman& connman, std::string_view msg_type, CDataStream& vRecv)
134133
{
135134
if (msg_type == NetMsgType::SPORK) {
136-
ProcessSpork(peer, peerman, connman, vRecv);
135+
return ProcessSpork(peer, connman, vRecv);
137136
} else if (msg_type == NetMsgType::GETSPORKS) {
138137
ProcessGetSporks(peer, connman);
139138
}
139+
return {};
140140
}
141141

142-
void CSporkManager::ProcessSpork(const CNode& peer, PeerManager& peerman, CConnman& connman, CDataStream& vRecv)
142+
PeerMsgRet CSporkManager::ProcessSpork(const CNode& peer, CConnman& connman, CDataStream& vRecv)
143143
{
144144
CSporkMessage spork;
145145
vRecv >> spork;
@@ -150,22 +150,20 @@ void CSporkManager::ProcessSpork(const CNode& peer, PeerManager& peerman, CConnm
150150
{
151151
LOCK(cs_main);
152152
EraseObjectRequest(peer.GetId(), CInv(MSG_SPORK, hash));
153-
if (!::ChainActive().Tip()) return;
153+
if (!::ChainActive().Tip()) return {};
154154
strLogMsg = strprintf("SPORK -- hash: %s id: %d value: %10d bestHeight: %d peer=%d", hash.ToString(), spork.nSporkID, spork.nValue, ::ChainActive().Height(), peer.GetId());
155155
}
156156

157157
if (spork.nTimeSigned > GetAdjustedTime() + 2 * 60 * 60) {
158158
LogPrint(BCLog::SPORK, "CSporkManager::ProcessSpork -- ERROR: too far into the future\n");
159-
peerman.Misbehaving(peer.GetId(), 100);
160-
return;
159+
return tl::unexpected{100};
161160
}
162161

163162
auto opt_keyIDSigner = spork.GetSignerKeyID();
164163

165164
if (opt_keyIDSigner == std::nullopt || WITH_LOCK(cs, return !setSporkPubKeyIDs.count(*opt_keyIDSigner))) {
166165
LogPrint(BCLog::SPORK, "CSporkManager::ProcessSpork -- ERROR: invalid signature\n");
167-
peerman.Misbehaving(peer.GetId(), 100);
168-
return;
166+
return tl::unexpected{100};
169167
}
170168

171169
auto keyIDSigner = *opt_keyIDSigner;
@@ -176,7 +174,7 @@ void CSporkManager::ProcessSpork(const CNode& peer, PeerManager& peerman, CConnm
176174
if (mapSporksActive[spork.nSporkID].count(keyIDSigner)) {
177175
if (mapSporksActive[spork.nSporkID][keyIDSigner].nTimeSigned >= spork.nTimeSigned) {
178176
LogPrint(BCLog::SPORK, "%s seen\n", strLogMsg);
179-
return;
177+
return {};
180178
} else {
181179
LogPrintf("%s updated\n", strLogMsg);
182180
}
@@ -198,6 +196,7 @@ void CSporkManager::ProcessSpork(const CNode& peer, PeerManager& peerman, CConnm
198196
WITH_LOCK(cs_mapSporksCachedValues, mapSporksCachedValues.erase(spork.nSporkID));
199197
}
200198
spork.Relay(connman);
199+
return {};
201200
}
202201

203202
void CSporkManager::ProcessGetSporks(CNode& peer, CConnman& connman)

src/spork.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
#include <hash.h>
99
#include <key.h>
1010
#include <net.h>
11+
#include <net_types.h>
1112
#include <pubkey.h>
1213
#include <saltedhasher.h>
1314
#include <sync.h>
@@ -24,7 +25,6 @@ template<typename T>
2425
class CFlatDB;
2526
class CNode;
2627
class CDataStream;
27-
class PeerManager;
2828

2929
class CSporkMessage;
3030
class CSporkManager;
@@ -258,15 +258,15 @@ class CSporkManager : public SporkStore
258258
/**
259259
* ProcessMessage is used to call ProcessSpork and ProcessGetSporks. See below
260260
*/
261-
void ProcessMessage(CNode& peer, PeerManager& peerman, CConnman& connman, std::string_view msg_type, CDataStream& vRecv);
261+
PeerMsgRet ProcessMessage(CNode& peer, CConnman& connman, std::string_view msg_type, CDataStream& vRecv);
262262

263263
/**
264264
* ProcessSpork is used to handle the 'spork' p2p message.
265265
*
266266
* For 'spork', it validates the spork and adds it to the internal spork storage and
267267
* performs any necessary processing.
268268
*/
269-
void ProcessSpork(const CNode& peer, PeerManager& peerman, CConnman& connman, CDataStream& vRecv) LOCKS_EXCLUDED(cs);
269+
PeerMsgRet ProcessSpork(const CNode& peer, CConnman& connman, CDataStream& vRecv) LOCKS_EXCLUDED(cs);
270270

271271
/**
272272
* ProcessGetSporks is used to handle the 'getsporks' p2p message.

0 commit comments

Comments
 (0)