diff --git a/nano/node/transport/tcp.cpp b/nano/node/transport/tcp.cpp index b0af4483..4951e227 100644 --- a/nano/node/transport/tcp.cpp +++ b/nano/node/transport/tcp.cpp @@ -484,7 +484,13 @@ bool nano::transport::tcp_channels::node_id_handhake_sockets_empty () const return node_id_handshake_sockets.empty (); } -void nano::transport::tcp_channels::remove_node_id_handshake_socket (std::shared_ptr socket_a) +void nano::transport::tcp_channels::push_node_id_handshake_socket (std::shared_ptr const & socket_a) +{ + nano::lock_guard guard (mutex); + node_id_handshake_sockets.push_back (socket_a); +} + +void nano::transport::tcp_channels::remove_node_id_handshake_socket (std::shared_ptr const & socket_a) { std::weak_ptr node_w (node.shared ()); if (auto node_l = node_w.lock ()) @@ -521,7 +527,7 @@ void nano::transport::tcp_channels::start_tcp (nano::endpoint const & endpoint_a } std::shared_ptr> receive_buffer (std::make_shared> ()); receive_buffer->resize (256); - node_l->network.tcp_channels.node_id_handshake_sockets.push_back (socket); + node_l->network.tcp_channels.push_node_id_handshake_socket (socket); channel->send_buffer (bytes, nano::stat::detail::node_id_handshake, [node_w, channel, endpoint_a, receive_buffer, callback_a](boost::system::error_code const & ec, size_t size_a) { if (auto node_l = node_w.lock ()) { diff --git a/nano/node/transport/tcp.hpp b/nano/node/transport/tcp.hpp index 03d8a089..f2077443 100644 --- a/nano/node/transport/tcp.hpp +++ b/nano/node/transport/tcp.hpp @@ -104,7 +104,8 @@ namespace transport void start_tcp (nano::endpoint const &, std::function)> const & = nullptr); void start_tcp_receive_node_id (std::shared_ptr, nano::endpoint const &, std::shared_ptr>, std::function)> const &); void udp_fallback (nano::endpoint const &, std::function)> const &); - void remove_node_id_handshake_socket (std::shared_ptr socket_a); + void push_node_id_handshake_socket (std::shared_ptr const & socket_a); + void remove_node_id_handshake_socket (std::shared_ptr const & socket_a); bool node_id_handhake_sockets_empty () const; nano::node & node;