]> git.ipfire.org Git - thirdparty/pdns.git/commitdiff
auth: Convert Lua records to LockGuarded
authorRemi Gacogne <remi.gacogne@powerdns.com>
Fri, 4 Jun 2021 14:17:31 +0000 (16:17 +0200)
committerRemi Gacogne <remi.gacogne@powerdns.com>
Wed, 18 Aug 2021 09:34:05 +0000 (11:34 +0200)
pdns/lua-record.cc

index 49dd69fd4ee33448c61fd7bca7879dba4e324636..d2d7ba3347bb14be576fd7861cbb36cd2bf54666 100644 (file)
@@ -1,10 +1,10 @@
 #include <thread>
 #include <future>
-#include <mutex>
 #include <boost/format.hpp>
 #include <utility>
 #include "version.hh"
 #include "ext/luawrapper/include/LuaContext.hpp"
+#include "lock.hh"
 #include "lua-auth4.hh"
 #include "sstuff.hh"
 #include "minicurl.hh"
@@ -443,14 +443,16 @@ static ComboAddress pickclosest(const ComboAddress& bestwho, const vector<ComboA
 
 static std::vector<DNSZoneRecord> lookup(const DNSName& name, uint16_t qtype, int zoneid)
 {
-  static UeberBackend ub;
-  static std::mutex mut;
-  std::lock_guard<std::mutex> lock(mut);
-  ub.lookup(QType(qtype), name, zoneid);
+  static LockGuarded<UeberBackend> s_ub;
+
   DNSZoneRecord dr;
   vector<DNSZoneRecord> ret;
-  while(ub.get(dr)) {
-    ret.push_back(dr);
+  {
+    auto ub = s_ub.lock();
+    ub->lookup(QType(qtype), name, zoneid);
+    while (ub->get(dr)) {
+      ret.push_back(dr);
+    }
   }
   return ret;
 }