From 1b92a599427470a6757d31fb1553b84ce19ab21f Mon Sep 17 00:00:00 2001 From: Sergey Kroshnin Date: Thu, 25 Apr 2019 22:22:31 +0300 Subject: [PATCH] [TSAN] Protect local_endpoint value with mutex (#1912) * [TSAN] Protect local_endpoint value with mutex * Update not_a_peer function --- nano/node/transport/udp.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/nano/node/transport/udp.cpp b/nano/node/transport/udp.cpp index 8c5a578d..5e62da7c 100644 --- a/nano/node/transport/udp.cpp +++ b/nano/node/transport/udp.cpp @@ -387,6 +387,7 @@ void nano::transport::udp_channels::stop () { // Stop and invalidate local endpoint stopped = true; + std::lock_guard lock (mutex); local_endpoint = nano::endpoint (boost::asio::ip::address_v6::loopback (), 0); // clang-format off @@ -399,6 +400,7 @@ void nano::transport::udp_channels::stop () nano::endpoint nano::transport::udp_channels::get_local_endpoint () const { + std::lock_guard lock (mutex); return local_endpoint; } @@ -633,7 +635,7 @@ bool nano::transport::udp_channels::not_a_peer (nano::endpoint const & endpoint_ { result = true; } - else if (endpoint_a == local_endpoint) + else if (endpoint_a == get_local_endpoint ()) { result = true; }