Node id handshake container not protected during push (#2402)
* Node id handshake container not protected during push * Use nano::lock_guard not std::lock_guard
This commit is contained in:
		
					parent
					
						
							
								5295cf63ea
							
						
					
				
			
			
				commit
				
					
						94fb929f2c
					
				
			
		
					 2 changed files with 10 additions and 3 deletions
				
			
		| 
						 | 
				
			
			@ -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<nano::socket> socket_a)
 | 
			
		||||
void nano::transport::tcp_channels::push_node_id_handshake_socket (std::shared_ptr<nano::socket> const & socket_a)
 | 
			
		||||
{
 | 
			
		||||
	nano::lock_guard<std::mutex> guard (mutex);
 | 
			
		||||
	node_id_handshake_sockets.push_back (socket_a);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void nano::transport::tcp_channels::remove_node_id_handshake_socket (std::shared_ptr<nano::socket> const & socket_a)
 | 
			
		||||
{
 | 
			
		||||
	std::weak_ptr<nano::node> 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<std::vector<uint8_t>> receive_buffer (std::make_shared<std::vector<uint8_t>> ());
 | 
			
		||||
				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 ())
 | 
			
		||||
					{
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -104,7 +104,8 @@ namespace transport
 | 
			
		|||
		void start_tcp (nano::endpoint const &, std::function<void(std::shared_ptr<nano::transport::channel>)> const & = nullptr);
 | 
			
		||||
		void start_tcp_receive_node_id (std::shared_ptr<nano::transport::channel_tcp>, nano::endpoint const &, std::shared_ptr<std::vector<uint8_t>>, std::function<void(std::shared_ptr<nano::transport::channel>)> const &);
 | 
			
		||||
		void udp_fallback (nano::endpoint const &, std::function<void(std::shared_ptr<nano::transport::channel>)> const &);
 | 
			
		||||
		void remove_node_id_handshake_socket (std::shared_ptr<nano::socket> socket_a);
 | 
			
		||||
		void push_node_id_handshake_socket (std::shared_ptr<nano::socket> const & socket_a);
 | 
			
		||||
		void remove_node_id_handshake_socket (std::shared_ptr<nano::socket> const & socket_a);
 | 
			
		||||
		bool node_id_handhake_sockets_empty () const;
 | 
			
		||||
		nano::node & node;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue