]> git.ipfire.org Git - thirdparty/pdns.git/commitdiff
Rename the lock() method to write_lock() for shared mutexes
authorRemi Gacogne <remi.gacogne@powerdns.com>
Wed, 19 May 2021 10:57:09 +0000 (12:57 +0200)
committerRemi Gacogne <remi.gacogne@powerdns.com>
Tue, 17 Aug 2021 12:10:34 +0000 (14:10 +0200)
13 files changed:
pdns/dnscrypt.cc
pdns/dnsdist-cache.cc
pdns/dnsdist-cache.hh
pdns/dnsdist-carbon.cc
pdns/dnsdist-lua.cc
pdns/dnsdist.cc
pdns/dnsdistdist/dnsdist-backend.cc
pdns/dnsdistdist/dnsdist-kvs.cc
pdns/dnsdistdist/dnsdist-rules.hh
pdns/libssl.cc
pdns/lock.hh
pdns/recursordist/aggressive_nsec.cc
pdns/tcpiohandler.cc

index 71bfe6ced9d0255d5f31ff99e2431f8c89938644..9a803958fdff103218a173cac4cb25de4cea8418 100644 (file)
@@ -284,7 +284,7 @@ std::string DNSCryptContext::certificateDateToStr(uint32_t date)
 
 void DNSCryptContext::addNewCertificate(std::shared_ptr<DNSCryptCertificatePair>& newCert, bool reload)
 {
-  auto certs = d_certs.lock();
+  auto certs = d_certs.write_lock();
 
   for (auto pair : *certs) {
     if (pair->cert.getSerial() == newCert->cert.getSerial()) {
@@ -327,7 +327,7 @@ void DNSCryptContext::loadNewCertificate(const std::string& certFile, const std:
   auto newPair = DNSCryptContext::loadCertificatePair(certFile, keyFile);
   newPair->active = active;
   addNewCertificate(newPair, reload);
-  d_certKeyPaths.lock()->push_back({certFile, keyFile});
+  d_certKeyPaths.write_lock()->push_back({certFile, keyFile});
 }
 
 void DNSCryptContext::reloadCertificates()
@@ -342,7 +342,7 @@ void DNSCryptContext::reloadCertificates()
   }
     
   {
-    *(d_certs.lock()) = std::move(newCerts);
+    *(d_certs.write_lock()) = std::move(newCerts);
   }
 }
 
@@ -353,7 +353,7 @@ std::vector<std::shared_ptr<DNSCryptCertificatePair>> DNSCryptContext::getCertif
 
 void DNSCryptContext::markActive(uint32_t serial)
 {
-  for (auto pair : *d_certs.lock()) {
+  for (auto pair : *d_certs.write_lock()) {
     if (pair->active == false && pair->cert.getSerial() == serial) {
       pair->active = true;
       return;
@@ -364,7 +364,7 @@ void DNSCryptContext::markActive(uint32_t serial)
 
 void DNSCryptContext::markInactive(uint32_t serial)
 {
-  for (auto pair : *d_certs.lock()) {
+  for (auto pair : *d_certs.write_lock()) {
     if (pair->active == true && pair->cert.getSerial() == serial) {
       pair->active = false;
       return;
@@ -375,7 +375,7 @@ void DNSCryptContext::markInactive(uint32_t serial)
 
 void DNSCryptContext::removeInactiveCertificate(uint32_t serial)
 {
-  auto certs = d_certs.lock();
+  auto certs = d_certs.write_lock();
 
   for (auto it = certs->begin(); it != certs->end(); ) {
     if ((*it)->active == false && (*it)->cert.getSerial() == serial) {
index 266a1cb05cfcc3eb3aba7a6dc059705ff37fc658..8b41f6845480ab96ea24e45a272f56fc4148f965 100644 (file)
@@ -174,7 +174,7 @@ void DNSDistPacketCache::insert(uint32_t key, const boost::optional<Netmask>& su
   auto& shard = d_shards.at(shardIndex);
 
   if (d_deferrableInsertLock) {
-    auto w = shard.d_map.try_lock();
+    auto w = shard.d_map.try_write_lock();
 
     if (!w.owns_lock()) {
       d_deferredInserts++;
@@ -183,7 +183,7 @@ void DNSDistPacketCache::insert(uint32_t key, const boost::optional<Netmask>& su
     insertLocked(shard, *w, key, newValue);
   }
   else {
-    auto w = shard.d_map.lock();
+    auto w = shard.d_map.write_lock();
 
     insertLocked(shard, *w, key, newValue);
   }
@@ -296,7 +296,7 @@ size_t DNSDistPacketCache::purgeExpired(size_t upTo, const time_t now)
   size_t removed = 0;
 
   for (auto& shard : d_shards) {
-    auto map = shard.d_map.lock();
+    auto map = shard.d_map.write_lock();
     if (map->size() <= maxPerShard) {
       continue;
     }
@@ -332,7 +332,7 @@ size_t DNSDistPacketCache::expunge(size_t upTo)
   size_t removed = 0;
 
   for (auto& shard : d_shards) {
-    auto map = shard.d_map.lock();
+    auto map = shard.d_map.write_lock();
 
     if (map->size() <= maxPerShard) {
       continue;
@@ -364,7 +364,7 @@ size_t DNSDistPacketCache::expungeByName(const DNSName& name, uint16_t qtype, bo
   size_t removed = 0;
 
   for (auto& shard : d_shards) {
-    auto map = shard.d_map.lock();
+    auto map = shard.d_map.write_lock();
 
     for(auto it = map->begin(); it != map->end(); ) {
       const CacheValue& value = it->second;
index 33c03eef5604fced32136838daeddba3c9bbad28..0fbcb772b922f8655f72ae482d440282a5666810 100644 (file)
@@ -112,7 +112,7 @@ private:
 
     void setSize(size_t maxSize)
     {
-      d_map.lock()->reserve(maxSize);
+      d_map.write_lock()->reserve(maxSize);
     }
 
     SharedLockGuarded<std::unordered_map<uint32_t,CacheValue>> d_map;
index e9d169e8a08bdcba334c30fcfacb073941a2d7b8..afbe27decd2ffd9712659fb27d28c288107e411e 100644 (file)
@@ -239,7 +239,7 @@ void carbonDumpThread()
 
           {
             std::string qname;
-            auto records = g_qcount.records.lock();
+            auto records = g_qcount.records.write_lock();
             for (const auto &record : *records) {
               qname = record.first;
               boost::replace_all(qname, ".", "_");
index cce08db5f599e7ca01f30628ad2dbf23e7eeb139..879b785e5a210480e6ae7f5b96ea63db85d3cd37 100644 (file)
@@ -1046,7 +1046,7 @@ static void setupLuaConfig(LuaContext& luaCtx, bool client, bool configCheck)
   luaCtx.writeFunction("clearQueryCounters", []() {
       unsigned int size{0};
       {
-        auto records = g_qcount.records.lock();
+        auto records = g_qcount.records.write_lock();
         size = records->size();
         records->clear();
       }
index f4b5804ee5ae4d81d33a7f6715d1f791c78e0cd6..5413127064775b08032178d9d72eb7cb2304901e 100644 (file)
@@ -854,7 +854,7 @@ static bool applyRulesToQuery(LocalHolders& holders, DNSQuestion& dq, const stru
     }
 
     if (countQuery) {
-      auto records = g_qcount.records.lock();
+      auto records = g_qcount.records.write_lock();
       if (!records->count(qname)) {
         (*records)[qname] = 0;
       }
index ad290d17db63eb54d26fb08c623c23eb619267bd..d0ffe2eecb262c34afd33accd8655ad810de6b0f 100644 (file)
@@ -117,7 +117,7 @@ void DownstreamState::hash()
 {
   vinfolog("Computing hashes for id=%s and weight=%d", id, weight);
   auto w = weight;
-  auto lockedHashes = hashes.lock();
+  auto lockedHashes = hashes.write_lock();
   lockedHashes->clear();
   lockedHashes->reserve(w);
   while (w > 0) {
@@ -216,7 +216,7 @@ const std::shared_ptr<ServerPolicy::NumberedServerVector> ServerPool::getServers
 
 void ServerPool::addServer(shared_ptr<DownstreamState>& server)
 {
-  auto servers = d_servers.lock();
+  auto servers = d_servers.write_lock();
   /* we can't update the content of the shared pointer directly even when holding the lock,
      as other threads might hold a copy. We can however update the pointer as long as we hold the lock. */
   unsigned int count = static_cast<unsigned int>((*servers)->size());
@@ -236,7 +236,7 @@ void ServerPool::addServer(shared_ptr<DownstreamState>& server)
 
 void ServerPool::removeServer(shared_ptr<DownstreamState>& server)
 {
-  auto servers = d_servers.lock();
+  auto servers = d_servers.write_lock();
   /* we can't update the content of the shared pointer directly even when holding the lock,
      as other threads might hold a copy. We can however update the pointer as long as we hold the lock. */
   auto newServers = std::make_shared<ServerPolicy::NumberedServerVector>(*(*servers));
index bc43e8f26e8fae0949d88ed9d7f05a1ac0538920..ead0e1096553fad8e163e306f4543309fcbe2eed 100644 (file)
@@ -192,7 +192,7 @@ bool CDBKVStore::reload(const struct stat& st)
 {
   auto newCDB = std::unique_ptr<CDB>(new CDB(d_fname));
   {
-    *(d_cdb.lock()) = std::move(newCDB);
+    *(d_cdb.write_lock()) = std::move(newCDB);
   }
   d_mtime = st.st_mtime;
   return true;
index 89b7cae81326367aad50f1faeacb8b67f623ba45..6e0e5d92322dd964837b448cc730b9a1ad87eb5c 100644 (file)
@@ -258,13 +258,13 @@ public:
   {
     // think twice before adding templates here
     if (ca.sin4.sin_family == AF_INET) {
-      auto res = d_ip4s.lock()->insert({ca.sin4.sin_addr.s_addr, ttd});
+      auto res = d_ip4s.write_lock()->insert({ca.sin4.sin_addr.s_addr, ttd});
       if (!res.second && (time_t)res.first->second < ttd) {
         res.first->second = (uint32_t)ttd;
       }
     }
     else {
-      auto res = d_ip6s.lock()->insert({{ca}, ttd});
+      auto res = d_ip6s.write_lock()->insert({{ca}, ttd});
       if (!res.second && (time_t)res.first->second < ttd) {
         res.first->second = (uint32_t)ttd;
       }
@@ -274,24 +274,24 @@ public:
   void remove(const ComboAddress& ca)
   {
     if (ca.sin4.sin_family == AF_INET) {
-      d_ip4s.lock()->erase(ca.sin4.sin_addr.s_addr);
+      d_ip4s.write_lock()->erase(ca.sin4.sin_addr.s_addr);
     }
     else {
-      d_ip6s.lock()->erase({ca});
+      d_ip6s.write_lock()->erase({ca});
     }
   }
 
   void clear()
   {
-    d_ip4s.lock()->clear();
-    d_ip6s.lock()->clear();
+    d_ip4s.write_lock()->clear();
+    d_ip6s.write_lock()->clear();
   }
 
   void cleanup()
   {
     time_t now = time(nullptr);
     {
-      auto ip4s = d_ip4s.lock();
+      auto ip4s = d_ip4s.write_lock();
       for (auto iter = ip4s->begin(); iter != ip4s->end(); ) {
        if (iter->second < now) {
          iter = ip4s->erase(iter);
@@ -303,7 +303,7 @@ public:
     }
 
     {
-      auto ip6s = d_ip6s.lock();
+      auto ip6s = d_ip6s.write_lock();
       for (auto iter = ip6s->begin(); iter != ip6s->end(); ) {
        if (iter->second < now) {
          iter = ip6s->erase(iter);
index 2d2a717b82c9a4a7e563050ba68fe7d24852da5f..b667d27d01cf69eb82eb15727e39046b555b9cca 100644 (file)
@@ -493,7 +493,7 @@ bool libssl_set_min_tls_version(std::unique_ptr<SSL_CTX, void(*)(SSL_CTX*)>& ctx
 
 OpenSSLTLSTicketKeysRing::OpenSSLTLSTicketKeysRing(size_t capacity)
 {
-  d_ticketKeys.lock()->set_capacity(capacity);
+  d_ticketKeys.write_lock()->set_capacity(capacity);
 }
 
 OpenSSLTLSTicketKeysRing::~OpenSSLTLSTicketKeysRing()
@@ -502,7 +502,7 @@ OpenSSLTLSTicketKeysRing::~OpenSSLTLSTicketKeysRing()
 
 void OpenSSLTLSTicketKeysRing::addKey(std::shared_ptr<OpenSSLTLSTicketKey> newKey)
 {
-  d_ticketKeys.lock()->push_front(newKey);
+  d_ticketKeys.write_lock()->push_front(newKey);
 }
 
 std::shared_ptr<OpenSSLTLSTicketKey> OpenSSLTLSTicketKeysRing::getEncryptionKey()
index fa1d4c260393ac46bc6994c7cf15c96330f04312..fbf94bf8369e79f547d5242d78ba0bd5e34044cf 100644 (file)
@@ -364,12 +364,12 @@ public:
   {
   }
 
-  SharedLockGuardedTryHolder<T> try_lock()
+  SharedLockGuardedTryHolder<T> try_write_lock()
   {
     return SharedLockGuardedTryHolder<T>(d_value, d_mutex);
   }
 
-  SharedLockGuardedHolder<T> lock()
+  SharedLockGuardedHolder<T> write_lock()
   {
     return SharedLockGuardedHolder<T>(d_value, d_mutex);
   }
index b56784007b5ee3d6324261f318f1b4fa0bc2ee63..9368e4a865faf24451d95a100aa934b53d4a8e32 100644 (file)
@@ -65,7 +65,7 @@ std::shared_ptr<LockGuarded<AggressiveNSECCache::ZoneEntry>> AggressiveNSECCache
   auto entry = std::make_shared<LockGuarded<ZoneEntry>>(zone);
 
   {
-    auto zones = d_zones.lock();
+    auto zones = d_zones.write_lock();
     /* it might have been inserted in the mean time */
     auto got = zones->lookup(zone);
     if (got && *got) {
@@ -92,7 +92,7 @@ void AggressiveNSECCache::updateEntriesCount(SuffixMatchTree<std::shared_ptr<Loc
 
 void AggressiveNSECCache::removeZoneInfo(const DNSName& zone, bool subzones)
 {
-  auto zones = d_zones.lock();
+  auto zones = d_zones.write_lock();
 
   if (subzones) {
     zones->remove(zone, true);
@@ -134,7 +134,7 @@ void AggressiveNSECCache::prune(time_t now)
     toLook = toErase * 5;
     // we are full, scan at max 5 * toErase entries and stop once we have nuked enough
 
-    auto zones = d_zones.lock();
+    auto zones = d_zones.write_lock();
     zones->visit([now, &erased, toErase, toLook, &lookedAt, &emptyEntries](const SuffixMatchTree<std::shared_ptr<LockGuarded<ZoneEntry>>>& node) {
       if (!node.d_value || erased > toErase || lookedAt > toLook) {
         return;
@@ -163,7 +163,7 @@ void AggressiveNSECCache::prune(time_t now)
   }
   else {
     // we are not full, just look through 10% of the cache and nuke everything that is expired
-    auto zones = d_zones.lock();
+    auto zones = d_zones.write_lock();
     zones->visit([now, &erased, toLook, &lookedAt, &emptyEntries](const SuffixMatchTree<std::shared_ptr<LockGuarded<ZoneEntry>>>& node) {
       if (!node.d_value) {
         return;
@@ -193,7 +193,7 @@ void AggressiveNSECCache::prune(time_t now)
   d_entriesCount -= erased;
 
   if (!emptyEntries.empty()) {
-    auto zones = d_zones.lock();
+    auto zones = d_zones.write_lock();
     for (const auto& entry : emptyEntries) {
       zones->remove(entry);
     }
index 40137041b0a4d0d77bf7b75d43dcad1587c3c597..daa49a1a59593fa9ccc312e4d92513fc3d0937b0 100644 (file)
@@ -1175,7 +1175,7 @@ public:
     auto newKey = std::make_shared<GnuTLSTicketsKey>();
 
     {
-      *(d_ticketsKey.lock()) = newKey;
+      *(d_ticketsKey.write_lock()) = newKey;
     }
 
     if (d_ticketsKeyRotationDelay > 0) {
@@ -1191,7 +1191,7 @@ public:
 
     auto newKey = std::make_shared<GnuTLSTicketsKey>(file);
     {
-      *(d_ticketsKey.lock()) = newKey;
+      *(d_ticketsKey.write_lock()) = newKey;
     }
 
     if (d_ticketsKeyRotationDelay > 0) {