]> git.ipfire.org Git - thirdparty/pdns.git/commitdiff
dnsdist: Skip the creation of temp objects in KVS lookups from Lua
authorRemi Gacogne <remi.gacogne@powerdns.com>
Fri, 3 Jan 2020 17:05:57 +0000 (18:05 +0100)
committerRemi Gacogne <remi.gacogne@powerdns.com>
Tue, 11 Feb 2020 10:49:58 +0000 (11:49 +0100)
pdns/dnsdistdist/dnsdist-lua-bindings-kvs.cc

index 5050879af2624ece90584bd136f704893892fcb6..a026cfb11b4d30a318c9f880423e6a1342ee1c1b 100644 (file)
@@ -64,26 +64,26 @@ void setupLuaBindingsKVS(bool client)
     }
 
     if (keyVar.type() == typeid(ComboAddress)) {
-      const auto ca = *boost::get<ComboAddress>(&keyVar);
+      const auto ca = boost::get<ComboAddress>(&keyVar);
       KeyValueLookupKeySourceIP lookup;
-      for (const auto& key : lookup.getKeys(ca)) {
+      for (const auto& key : lookup.getKeys(*ca)) {
         if (kvs->getValue(key, result)) {
           return result;
         }
       }
     }
     else if (keyVar.type() == typeid(DNSName)) {
-      DNSName dn = *boost::get<DNSName>(&keyVar);
+      const DNSName* dn = boost::get<DNSName>(&keyVar);
       KeyValueLookupKeyQName lookup(wireFormat ? *wireFormat : true);
-      for (const auto& key : lookup.getKeys(dn)) {
+      for (const auto& key : lookup.getKeys(*dn)) {
         if (kvs->getValue(key, result)) {
           return result;
         }
       }
     }
     else if (keyVar.type() == typeid(std::string)) {
-      std::string keyStr = *boost::get<std::string>(&keyVar);
-      kvs->getValue(keyStr, result);
+      const std::string* keyStr = boost::get<std::string>(&keyVar);
+      kvs->getValue(*keyStr, result);
     }
 
     return result;