Skip to content

Commit 09565fe

Browse files
committed
refactor: new type of message processing result for resolving circular dependency over PeerManager
1 parent d54b3ee commit 09565fe

File tree

11 files changed

+56
-26
lines changed

11 files changed

+56
-26
lines changed

src/coinjoin/client.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
#include <coinjoin/util.h>
99
#include <coinjoin/coinjoin.h>
1010

11-
#include <net_types.h>
11+
#include <protocol.h>
1212
#include <util/ranges.h>
1313
#include <util/translation.h>
1414

src/coinjoin/server.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77

88
#include <coinjoin/coinjoin.h>
99

10-
#include <net_types.h>
10+
#include <protocol.h>
1111

1212
class CActiveMasternodeManager;
1313
class CChainState;

src/evo/mnauth.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
#define BITCOIN_EVO_MNAUTH_H
77

88
#include <bls/bls.h>
9-
#include <net_types.h>
9+
#include <protocol.h>
1010
#include <serialize.h>
1111

1212
class CActiveMasternodeManager;

src/governance/governance.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010

1111
#include <cachemap.h>
1212
#include <cachemultimap.h>
13-
#include <net_types.h>
13+
#include <protocol.h>
1414
#include <util/check.h>
1515

1616
#include <optional>

src/llmq/blockprocessor.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@
99

1010
#include <chain.h>
1111
#include <consensus/params.h>
12-
#include <net_types.h>
1312
#include <primitives/block.h>
13+
#include <protocol.h>
1414
#include <saltedhasher.h>
1515
#include <sync.h>
1616

src/llmq/quorums.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@
1313

1414
#include <bls/bls.h>
1515
#include <bls/bls_worker.h>
16+
#include <protocol.h>
1617

17-
#include <net_types.h>
1818
#include <gsl/pointers.h>
1919

2020
#include <atomic>

src/llmq/signing.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
#include <bls/bls.h>
99
#include <consensus/params.h>
1010
#include <gsl/pointers.h>
11-
#include <net_types.h>
11+
#include <protocol.h>
1212
#include <random.h>
1313
#include <saltedhasher.h>
1414
#include <sync.h>

src/net_processing.cpp

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -584,8 +584,9 @@ class PeerManagerImpl final : public PeerManager
584584
bool IsInvInFilter(NodeId nodeid, const uint256& hash) const override EXCLUSIVE_LOCKS_REQUIRED(!m_peer_mutex);
585585

586586
private:
587-
/** Helper to process result of external handlers of message */
587+
/** Helpers to process result of external handlers of message */
588588
void ProcessPeerMsgRet(const PeerMsgRet& ret, CNode& pfrom) EXCLUSIVE_LOCKS_REQUIRED(!m_peer_mutex);
589+
void PostProcessMessage(MessageProcessingResult&& ret, NodeId node) override EXCLUSIVE_LOCKS_REQUIRED(!m_peer_mutex);
589590

590591
/** Consider evicting an outbound peer based on the amount of time they've been behind our tip */
591592
void ConsiderEviction(CNode& pto, Peer& peer, std::chrono::seconds time_in_seconds) EXCLUSIVE_LOCKS_REQUIRED(cs_main, g_msgproc_mutex);
@@ -3309,6 +3310,16 @@ void PeerManagerImpl::ProcessPeerMsgRet(const PeerMsgRet& ret, CNode& pfrom)
33093310
if (!ret) Misbehaving(pfrom.GetId(), ret.error().score, ret.error().message);
33103311
}
33113312

3313+
void PeerManagerImpl::PostProcessMessage(MessageProcessingResult&& ret, NodeId node)
3314+
{
3315+
if (ret.m_error) {
3316+
Misbehaving(node, ret.m_error->score, ret.m_error->message);
3317+
}
3318+
if (ret.m_inventory) {
3319+
RelayInv(ret.m_inventory.value(), MIN_PEER_PROTO_VERSION);
3320+
}
3321+
}
3322+
33123323
void PeerManagerImpl::ProcessMessage(
33133324
CNode& pfrom,
33143325
const std::string& msg_type,

src/net_processing.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,9 @@ class PeerManager : public CValidationInterface, public NetEventsInterface
127127
virtual void ProcessMessage(CNode& pfrom, const std::string& msg_type, CDataStream& vRecv,
128128
const std::chrono::microseconds time_received, const std::atomic<bool>& interruptMsgProc) EXCLUSIVE_LOCKS_REQUIRED(g_msgproc_mutex) = 0;
129129

130+
/** Finish message processing. Used for some specific messages */
131+
virtual void PostProcessMessage(MessageProcessingResult&& ret, NodeId node = -1) = 0;
132+
130133
/** This function is used for testing the stale tip eviction logic, see denialofservice_tests.cpp */
131134
virtual void UpdateLastBlockAnnounceTime(NodeId node, int64_t time_in_seconds) = 0;
132135

src/net_types.h

Lines changed: 0 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,6 @@
55
#ifndef BITCOIN_NET_TYPES_H
66
#define BITCOIN_NET_TYPES_H
77

8-
#include <util/expected.h>
9-
108
#include <cstdint>
119
#include <map>
1210
#include <string>
@@ -60,21 +58,5 @@ UniValue BanMapToJson(const banmap_t& bans);
6058
*/
6159
void BanMapFromJson(const UniValue& bans_json, banmap_t& bans);
6260

63-
struct MisbehavingError
64-
{
65-
int score;
66-
std::string message;
67-
68-
MisbehavingError(int s) : score{s} {}
69-
70-
// Constructor does a perfect forwarding reference
71-
template <typename T>
72-
MisbehavingError(int s, T&& msg) :
73-
score{s},
74-
message{std::forward<T>(msg)}
75-
{}
76-
};
77-
78-
using PeerMsgRet = tl::expected<void, MisbehavingError>;
7961

8062
#endif // BITCOIN_NET_TYPES_H

0 commit comments

Comments
 (0)