]> git.ipfire.org Git - thirdparty/pdns.git/commitdiff
No longer keep a local copy of pools, and remove unneeded lua side effect 7140/head
authorRobin Geuze <robing@transip.nl>
Mon, 5 Nov 2018 12:12:47 +0000 (13:12 +0100)
committerRobin Geuze <robing@transip.nl>
Mon, 5 Nov 2018 12:12:47 +0000 (13:12 +0100)
pdns/dnsdist-lua-rules.cc
pdns/dnsdistdist/dnsdist-rules.hh

index 8fc84d49407c5b7bb36a8d8d4c3be606cf9809fa..c209d10a500822b1af30299a89b5b9df4ebc67ea 100644 (file)
@@ -441,9 +441,7 @@ void setupLuaRules()
     });
 
   g_lua.writeFunction("PoolAvailableRule", [](std::string poolname) {
-    setLuaSideEffect();
-    auto localPools = g_pools.getCopy();
-    return std::shared_ptr<DNSRule>(new PoolAvailableRule(localPools, poolname));
+    return std::shared_ptr<DNSRule>(new PoolAvailableRule(poolname));
   });
 
   g_lua.registerFunction<void(std::shared_ptr<TimedIPSetRule>::*)()>("clear", [](std::shared_ptr<TimedIPSetRule> tisr) {
index 10a40b6014d5b7688f8e40fd8ecb99edbf58e6c6..f343f4f5db82b7356553aa5baf9a50a991184c8d 100644 (file)
@@ -995,14 +995,13 @@ private:
 class PoolAvailableRule : public DNSRule
 {
 public:
-  PoolAvailableRule(pools_t& pools, const std::string& poolname) : d_poolname(poolname)
+  PoolAvailableRule(const std::string& poolname) : d_pools(&g_pools), d_poolname(poolname)
   {
-    d_pool = getPool(pools, poolname);
   }
 
   bool matches(const DNSQuestion* dq) const override
   {
-    return (d_pool->countServers(true) > 0);
+    return (getPool(*d_pools, d_poolname)->countServers(true) > 0);
   }
 
   string toString() const override
@@ -1010,6 +1009,6 @@ public:
     return "pool '" + d_poolname + "' is available";
   }
 private:
+  mutable LocalStateHolder<pools_t> d_pools;
   std::string d_poolname;
-  std::shared_ptr<ServerPool> d_pool;
 };