Skip to content

Commit 9133fd6

Browse files
luke-jrbrunoerg
authored andcommitted
net: Move NetPermissionFlags::Implicit verification to AddWhitelistPermissionFlags
1 parent 2863d7d commit 9133fd6

File tree

3 files changed

+19
-17
lines changed

3 files changed

+19
-17
lines changed

src/net.cpp

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -558,9 +558,18 @@ void CNode::CloseSocketDisconnect()
558558
m_i2p_sam_session.reset();
559559
}
560560

561-
void CConnman::AddWhitelistPermissionFlags(NetPermissionFlags& flags, const CNetAddr &addr) const {
562-
for (const auto& subnet : vWhitelistedRange) {
563-
if (subnet.m_subnet.Match(addr)) NetPermissions::AddFlag(flags, subnet.m_flags);
561+
void CConnman::AddWhitelistPermissionFlags(NetPermissionFlags& flags, const CNetAddr &addr, const std::vector<NetWhitelistPermissions>& ranges) const {
562+
for (const auto& subnet : ranges) {
563+
if (subnet.m_subnet.Match(addr)) {
564+
NetPermissions::AddFlag(flags, subnet.m_flags);
565+
}
566+
}
567+
if (NetPermissions::HasFlag(flags, NetPermissionFlags::Implicit)) {
568+
NetPermissions::ClearFlag(flags, NetPermissionFlags::Implicit);
569+
if (whitelist_forcerelay) NetPermissions::AddFlag(flags, NetPermissionFlags::ForceRelay);
570+
if (whitelist_relay) NetPermissions::AddFlag(flags, NetPermissionFlags::Relay);
571+
NetPermissions::AddFlag(flags, NetPermissionFlags::Mempool);
572+
NetPermissions::AddFlag(flags, NetPermissionFlags::NoBan);
564573
}
565574
}
566575

@@ -1726,14 +1735,7 @@ void CConnman::CreateNodeFromAcceptedSocket(std::unique_ptr<Sock>&& sock,
17261735
{
17271736
int nInbound = 0;
17281737

1729-
AddWhitelistPermissionFlags(permission_flags, addr);
1730-
if (NetPermissions::HasFlag(permission_flags, NetPermissionFlags::Implicit)) {
1731-
NetPermissions::ClearFlag(permission_flags, NetPermissionFlags::Implicit);
1732-
if (gArgs.GetBoolArg("-whitelistforcerelay", DEFAULT_WHITELISTFORCERELAY)) NetPermissions::AddFlag(permission_flags, NetPermissionFlags::ForceRelay);
1733-
if (gArgs.GetBoolArg("-whitelistrelay", DEFAULT_WHITELISTRELAY)) NetPermissions::AddFlag(permission_flags, NetPermissionFlags::Relay);
1734-
NetPermissions::AddFlag(permission_flags, NetPermissionFlags::Mempool);
1735-
NetPermissions::AddFlag(permission_flags, NetPermissionFlags::NoBan);
1736-
}
1738+
AddWhitelistPermissionFlags(permission_flags, addr, vWhitelistedRange);
17371739

17381740
{
17391741
LOCK(m_nodes_mutex);

src/net.h

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -53,11 +53,6 @@ class CNode;
5353
class CScheduler;
5454
struct bilingual_str;
5555

56-
/** Default for -whitelistrelay. */
57-
static const bool DEFAULT_WHITELISTRELAY = true;
58-
/** Default for -whitelistforcerelay. */
59-
static const bool DEFAULT_WHITELISTFORCERELAY = false;
60-
6156
/** Time after which to disconnect, after waiting for a ping response (or inactivity). */
6257
static constexpr std::chrono::minutes TIMEOUT_INTERVAL{20};
6358
/** Run the feeler connection loop once every 2 minutes. **/
@@ -1343,7 +1338,7 @@ class CConnman
13431338

13441339
bool AttemptToEvictConnection();
13451340
CNode* ConnectNode(CAddress addrConnect, const char *pszDest, bool fCountFailure, ConnectionType conn_type, bool use_v2transport) EXCLUSIVE_LOCKS_REQUIRED(!m_unused_i2p_sessions_mutex);
1346-
void AddWhitelistPermissionFlags(NetPermissionFlags& flags, const CNetAddr &addr) const;
1341+
void AddWhitelistPermissionFlags(NetPermissionFlags& flags, const CNetAddr &addr, const std::vector<NetWhitelistPermissions>& ranges) const;
13471342

13481343
void DeleteNode(CNode* pnode);
13491344

src/net_permissions.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,11 @@ struct bilingual_str;
1515

1616
extern const std::vector<std::string> NET_PERMISSIONS_DOC;
1717

18+
/** Default for -whitelistrelay. */
19+
constexpr bool DEFAULT_WHITELISTRELAY = true;
20+
/** Default for -whitelistforcerelay. */
21+
constexpr bool DEFAULT_WHITELISTFORCERELAY = false;
22+
1823
enum class NetPermissionFlags : uint32_t {
1924
None = 0,
2025
// Can query bloomfilter even if -peerbloomfilters is false

0 commit comments

Comments
 (0)