diff options
author | Anthony Towns <aj@erisian.com.au> | 2022-05-20 05:37:54 +1000 |
---|---|---|
committer | Anthony Towns <aj@erisian.com.au> | 2022-08-29 22:50:54 +1000 |
commit | ef26f2f421071986a3878a1a94b0149ae8e16fcd (patch) | |
tree | a156568bc6c1d947069a12bc743d7054347e9be2 /src | |
parent | bbec32c9ad2fe213314db9d39aa1eacff2e0bc23 (diff) |
net: mark CNode unique_ptr members as const
Dereferencing a unique_ptr is not necessarily thread safe. The reason
these are safe is because their values are set at construction and do
not change later; so mark them as const and set them via the initializer
list to guarantee that.
Diffstat (limited to 'src')
-rw-r--r-- | src/net.cpp | 7 | ||||
-rw-r--r-- | src/net.h | 4 |
2 files changed, 5 insertions, 6 deletions
diff --git a/src/net.cpp b/src/net.cpp index cf0c9aef7b..535a5ce8e2 100644 --- a/src/net.cpp +++ b/src/net.cpp @@ -2723,7 +2723,9 @@ CNode::CNode(NodeId idIn, ConnectionType conn_type_in, bool inbound_onion, std::unique_ptr<i2p::sam::Session>&& i2p_sam_session) - : m_sock{sock}, + : m_deserializer{std::make_unique<V1TransportDeserializer>(V1TransportDeserializer(Params(), idIn, SER_NETWORK, INIT_PROTO_VERSION))}, + m_serializer{std::make_unique<V1TransportSerializer>(V1TransportSerializer())}, + m_sock{sock}, m_connected{GetTime<std::chrono::seconds>()}, addr{addrIn}, addrBind{addrBindIn}, @@ -2746,9 +2748,6 @@ CNode::CNode(NodeId idIn, } else { LogPrint(BCLog::NET, "Added connection peer=%d\n", id); } - - m_deserializer = std::make_unique<V1TransportDeserializer>(V1TransportDeserializer(Params(), id, SER_NETWORK, INIT_PROTO_VERSION)); - m_serializer = std::make_unique<V1TransportSerializer>(V1TransportSerializer()); } bool CConnman::NodeFullyConnected(const CNode* pnode) @@ -341,8 +341,8 @@ class CNode friend struct ConnmanTestMsg; public: - std::unique_ptr<TransportDeserializer> m_deserializer; - std::unique_ptr<const TransportSerializer> m_serializer; + const std::unique_ptr<TransportDeserializer> m_deserializer; // Used only by SocketHandler thread + const std::unique_ptr<const TransportSerializer> m_serializer; NetPermissionFlags m_permissionFlags{NetPermissionFlags::None}; |