Locking around read/write to peering_endpoint. (#4019)
This commit is contained in:
		
					parent
					
						
							
								0ad6e781fb
							
						
					
				
			
			
				commit
				
					
						c4111ea629
					
				
			
		
					 1 changed files with 3 additions and 0 deletions
				
			
		| 
						 | 
					@ -81,17 +81,20 @@ void nano::transport::channel::send (nano::message & message_a, std::function<vo
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void nano::transport::channel::set_peering_endpoint (nano::endpoint endpoint)
 | 
					void nano::transport::channel::set_peering_endpoint (nano::endpoint endpoint)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
						nano::lock_guard<nano::mutex> lock{ channel_mutex };
 | 
				
			||||||
	peering_endpoint = endpoint;
 | 
						peering_endpoint = endpoint;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
nano::endpoint nano::transport::channel::get_peering_endpoint () const
 | 
					nano::endpoint nano::transport::channel::get_peering_endpoint () const
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
						nano::unique_lock<nano::mutex> lock{ channel_mutex };
 | 
				
			||||||
	if (peering_endpoint)
 | 
						if (peering_endpoint)
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		return *peering_endpoint;
 | 
							return *peering_endpoint;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	else
 | 
						else
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
 | 
							lock.unlock ();
 | 
				
			||||||
		return get_endpoint ();
 | 
							return get_endpoint ();
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue