]> git.ipfire.org Git - thirdparty/pdns.git/commitdiff
dnsdist: Fix an issue spotted by TSAN: we need to use atomic_load_explicit along... 13759/head
authorRemi Gacogne <remi.gacogne@powerdns.com>
Thu, 8 Feb 2024 14:58:38 +0000 (15:58 +0100)
committerRemi Gacogne <remi.gacogne@powerdns.com>
Thu, 8 Feb 2024 14:58:38 +0000 (15:58 +0100)
pdns/dnsdistdist/doh3.cc
pdns/dnsdistdist/doq.cc

index c6b6f4c2df8ecf442225de1978d1f5df7e793b01..a223364808a921da27ea8c7ac8bcf558d7a3d007 100644 (file)
@@ -438,7 +438,8 @@ static std::optional<std::reference_wrapper<H3Connection>> 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;
 }
index 4ac7267f0bf4e56fc1aa98e49e7a5cb51d1533a7..b3de74ee9be91bb1a3e39fa5523687252b776506 100644 (file)
@@ -355,7 +355,8 @@ static std::optional<std::reference_wrapper<Connection>> 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;
 }