From d394156b99d6b9a99aedee78658310d169ca188d Mon Sep 17 00:00:00 2001 From: Anthony Towns Date: Thu, 1 Sep 2022 18:44:07 +1000 Subject: [PATCH] net: make CNode::m_permissionFlags const --- src/net.cpp | 7 +++++-- src/net.h | 3 ++- src/test/denialofservice_tests.cpp | 1 - src/test/fuzz/util.cpp | 1 - src/test/fuzz/util.h | 7 +++++-- src/test/util/net.cpp | 2 -- src/test/util/net.h | 1 - 7 files changed, 12 insertions(+), 10 deletions(-) diff --git a/src/net.cpp b/src/net.cpp index cbc2b35013..c6448e4798 100644 --- a/src/net.cpp +++ b/src/net.cpp @@ -1027,9 +1027,11 @@ void CConnman::CreateNodeFromAcceptedSocket(std::unique_ptr&& sock, addr_bind, /*addrNameIn=*/"", ConnectionType::INBOUND, - inbound_onion); + inbound_onion, + CNodeOptions{ + .permission_flags = permissionFlags, + }); pnode->AddRef(); - pnode->m_permissionFlags = permissionFlags; pnode->m_prefer_evict = discouraged; m_msgproc->InitializeNode(*pnode, nodeServices); @@ -2725,6 +2727,7 @@ CNode::CNode(NodeId idIn, CNodeOptions&& node_opts) : m_deserializer{std::make_unique(V1TransportDeserializer(Params(), idIn, SER_NETWORK, INIT_PROTO_VERSION))}, m_serializer{std::make_unique(V1TransportSerializer())}, + m_permissionFlags{node_opts.permission_flags}, m_sock{sock}, m_connected{GetTime()}, addr{addrIn}, diff --git a/src/net.h b/src/net.h index 0167078aa2..2cf334f8a9 100644 --- a/src/net.h +++ b/src/net.h @@ -336,6 +336,7 @@ public: struct CNodeOptions { + NetPermissionFlags permission_flags = NetPermissionFlags::None; std::unique_ptr i2p_sam_session = nullptr; }; @@ -349,7 +350,7 @@ public: const std::unique_ptr m_deserializer; // Used only by SocketHandler thread const std::unique_ptr m_serializer; - NetPermissionFlags m_permissionFlags{NetPermissionFlags::None}; // treated as const outside of fuzz tester + const NetPermissionFlags m_permissionFlags; /** * Socket used for communication with the node. diff --git a/src/test/denialofservice_tests.cpp b/src/test/denialofservice_tests.cpp index 66c4605afa..7889156d51 100644 --- a/src/test/denialofservice_tests.cpp +++ b/src/test/denialofservice_tests.cpp @@ -68,7 +68,6 @@ BOOST_AUTO_TEST_CASE(outbound_slow_chain_eviction) /*successfully_connected=*/true, /*remote_services=*/ServiceFlags(NODE_NETWORK | NODE_WITNESS), /*local_services=*/ServiceFlags(NODE_NETWORK | NODE_WITNESS), - /*permission_flags=*/NetPermissionFlags::None, /*version=*/PROTOCOL_VERSION, /*relay_txs=*/true); TestOnlyResetTimeData(); diff --git a/src/test/fuzz/util.cpp b/src/test/fuzz/util.cpp index ba1a634e41..38626d4bcf 100644 --- a/src/test/fuzz/util.cpp +++ b/src/test/fuzz/util.cpp @@ -295,7 +295,6 @@ void FillNode(FuzzedDataProvider& fuzzed_data_provider, ConnmanTestMsg& connman, /*successfully_connected=*/fuzzed_data_provider.ConsumeBool(), /*remote_services=*/ConsumeWeakEnum(fuzzed_data_provider, ALL_SERVICE_FLAGS), /*local_services=*/ConsumeWeakEnum(fuzzed_data_provider, ALL_SERVICE_FLAGS), - /*permission_flags=*/ConsumeWeakEnum(fuzzed_data_provider, ALL_NET_PERMISSION_FLAGS), /*version=*/fuzzed_data_provider.ConsumeIntegralInRange(MIN_PEER_PROTO_VERSION, std::numeric_limits::max()), /*relay_txs=*/fuzzed_data_provider.ConsumeBool()); } diff --git a/src/test/fuzz/util.h b/src/test/fuzz/util.h index 33d9ab3cc3..6d652c922b 100644 --- a/src/test/fuzz/util.h +++ b/src/test/fuzz/util.h @@ -301,6 +301,7 @@ auto ConsumeNode(FuzzedDataProvider& fuzzed_data_provider, const std::optional(node_id, sock, @@ -310,7 +311,8 @@ auto ConsumeNode(FuzzedDataProvider& fuzzed_data_provider, const std::optional ConsumeNodeAsUniquePtr(FuzzedDataProvider& fdp, const std::optional& node_id_in = std::nullopt) { return ConsumeNode(fdp, node_id_in); } diff --git a/src/test/util/net.cpp b/src/test/util/net.cpp index 223db16c6c..21273ac5c1 100644 --- a/src/test/util/net.cpp +++ b/src/test/util/net.cpp @@ -17,7 +17,6 @@ void ConnmanTestMsg::Handshake(CNode& node, bool successfully_connected, ServiceFlags remote_services, ServiceFlags local_services, - NetPermissionFlags permission_flags, int32_t version, bool relay_txs) { @@ -56,7 +55,6 @@ void ConnmanTestMsg::Handshake(CNode& node, assert(peerman.GetNodeStateStats(node.GetId(), statestats)); assert(statestats.m_relay_txs == (relay_txs && !node.IsBlockOnlyConn())); assert(statestats.their_services == remote_services); - node.m_permissionFlags = permission_flags; if (successfully_connected) { CSerializedNetMsg msg_verack{mm.Make(NetMsgType::VERACK)}; (void)connman.ReceiveMsgFrom(node, msg_verack); diff --git a/src/test/util/net.h b/src/test/util/net.h index ec6b4e6e88..b339bee32a 100644 --- a/src/test/util/net.h +++ b/src/test/util/net.h @@ -43,7 +43,6 @@ struct ConnmanTestMsg : public CConnman { bool successfully_connected, ServiceFlags remote_services, ServiceFlags local_services, - NetPermissionFlags permission_flags, int32_t version, bool relay_txs);