]> git.ipfire.org Git - thirdparty/pdns.git/commitdiff
dnsdist: Avoid a race if one is careless enough to call Rings::init() from two thread... 11171/head
authorRemi Gacogne <remi.gacogne@powerdns.com>
Wed, 12 Jan 2022 15:39:30 +0000 (16:39 +0100)
committerRemi Gacogne <remi.gacogne@powerdns.com>
Fri, 14 Jan 2022 09:03:20 +0000 (10:03 +0100)
pdns/dnsdist-rings.cc

index fe3530792222f07ad7a14e33b4da139939f185a9..6b044273a4c1cc9bb3479790470001534fc6046f 100644 (file)
@@ -35,10 +35,9 @@ void Rings::setCapacity(size_t newCapacity, size_t numberOfShards)
 
 void Rings::init()
 {
-  if (d_initialized) {
+  if (d_initialized.exchange(true)) {
     throw std::runtime_error("Rings::init() should only be called once");
   }
-  d_initialized = true;
 
   if (d_numberOfShards <= 1) {
     d_nbLockTries = 0;