Skip to content

Commit bbec32c

Browse files
committed
net: mark TransportSerializer/m_serializer as const
The (V1)TransportSerializer instance CNode::m_serializer is used from multiple threads via PushMessage without protection by a mutex. This is only thread safe because the class does not have any mutable state, so document that by marking the methods and the object as "const".
1 parent 06ebdc8 commit bbec32c

File tree

2 files changed

+6
-5
lines changed

2 files changed

+6
-5
lines changed

src/net.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -797,7 +797,8 @@ CNetMessage V1TransportDeserializer::GetMessage(const std::chrono::microseconds
797797
return msg;
798798
}
799799

800-
void V1TransportSerializer::prepareForTransport(CSerializedNetMsg& msg, std::vector<unsigned char>& header) {
800+
void V1TransportSerializer::prepareForTransport(CSerializedNetMsg& msg, std::vector<unsigned char>& header) const
801+
{
801802
// create dbl-sha256 checksum
802803
uint256 hash = Hash(msg.data);
803804

src/net.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -325,13 +325,13 @@ class V1TransportDeserializer final : public TransportDeserializer
325325
class TransportSerializer {
326326
public:
327327
// prepare message for transport (header construction, error-correction computation, payload encryption, etc.)
328-
virtual void prepareForTransport(CSerializedNetMsg& msg, std::vector<unsigned char>& header) = 0;
328+
virtual void prepareForTransport(CSerializedNetMsg& msg, std::vector<unsigned char>& header) const = 0;
329329
virtual ~TransportSerializer() {}
330330
};
331331

332-
class V1TransportSerializer : public TransportSerializer {
332+
class V1TransportSerializer : public TransportSerializer {
333333
public:
334-
void prepareForTransport(CSerializedNetMsg& msg, std::vector<unsigned char>& header) override;
334+
void prepareForTransport(CSerializedNetMsg& msg, std::vector<unsigned char>& header) const override;
335335
};
336336

337337
/** Information about a peer */
@@ -342,7 +342,7 @@ class CNode
342342

343343
public:
344344
std::unique_ptr<TransportDeserializer> m_deserializer;
345-
std::unique_ptr<TransportSerializer> m_serializer;
345+
std::unique_ptr<const TransportSerializer> m_serializer;
346346

347347
NetPermissionFlags m_permissionFlags{NetPermissionFlags::None};
348348

0 commit comments

Comments
 (0)