From 41f08f9fb802d10b1481817d59135ab15279792e Mon Sep 17 00:00:00 2001 From: Remi Gacogne Date: Thu, 8 Feb 2024 15:58:38 +0100 Subject: [PATCH] dnsdist: Fix an issue spotted by TSAN: we need to use atomic_load_explicit along with atomic_store_explicit --- pdns/dnsdistdist/doh3.cc | 3 ++- pdns/dnsdistdist/doq.cc | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/pdns/dnsdistdist/doh3.cc b/pdns/dnsdistdist/doh3.cc index c6b6f4c2df..a223364808 100644 --- a/pdns/dnsdistdist/doh3.cc +++ b/pdns/dnsdistdist/doh3.cc @@ -438,7 +438,8 @@ static std::optional> createConnection(DOH3 quiche_conn_set_keylog_path(quicheConn.get(), config.df->d_quicheParams.d_keyLogFile.c_str()); } - auto conn = H3Connection(peer, config.config, std::move(quicheConn)); + auto quicheConfig = std::atomic_load_explicit(&config.config, std::memory_order_acquire); + auto conn = H3Connection(peer, quicheConfig, std::move(quicheConn)); auto pair = config.d_connections.emplace(serverSideID, std::move(conn)); return pair.first->second; } diff --git a/pdns/dnsdistdist/doq.cc b/pdns/dnsdistdist/doq.cc index 4ac7267f0b..b3de74ee9b 100644 --- a/pdns/dnsdistdist/doq.cc +++ b/pdns/dnsdistdist/doq.cc @@ -355,7 +355,8 @@ static std::optional> createConnection(DOQSer quiche_conn_set_keylog_path(quicheConn.get(), config.df->d_quicheParams.d_keyLogFile.c_str()); } - auto conn = Connection(peer, config.config, std::move(quicheConn)); + auto quicheConfig = std::atomic_load_explicit(&config.config, std::memory_order_acquire); + auto conn = Connection(peer, quicheConfig, std::move(quicheConn)); auto pair = config.d_connections.emplace(serverSideID, std::move(conn)); return pair.first->second; } -- 2.47.2