]> git.ipfire.org Git - thirdparty/pdns.git/commitdiff
auth: Reserve the needed space in the vector of keys
authorRemi Gacogne <remi.gacogne@powerdns.com>
Fri, 17 Jan 2020 15:46:49 +0000 (16:46 +0100)
committerPeter van Dijk <peter.van.dijk@powerdns.com>
Thu, 5 Mar 2020 20:09:31 +0000 (21:09 +0100)
(cherry picked from commit fb4c0e19ccaaed9b88426ca3183b33271be2ecd6)

pdns/dbdnsseckeeper.cc

index e7f42a14770258378e8dddde6e52c60955b971dc..c2485628249d932353db032a9c54a126cd3dd490 100644 (file)
@@ -221,8 +221,8 @@ bool DNSSECKeeper::getFromMeta(const DNSName& zname, const std::string& key, std
   }
 
   if (ttl > 0) {
-    ReadLock l(&s_metacachelock); 
-    
+    ReadLock l(&s_metacachelock);
+
     metacache_t::const_iterator iter = s_metacache.find(tie(zname, key));
     if(iter != s_metacache.end() && iter->d_ttd > now) {
       value = iter->d_value;
@@ -232,7 +232,7 @@ bool DNSSECKeeper::getFromMeta(const DNSName& zname, const std::string& key, std
   vector<string> meta;
   d_keymetadb->getDomainMetadata(zname, key, meta);
   if(!meta.empty()) {
-    value=*meta.begin();
+    value=std::move(*meta.begin());
     isset = true;
   }
 
@@ -479,6 +479,7 @@ DNSSECKeeper::keyset_t DNSSECKeeper::getKeys(const DNSName& zone, bool useCache)
 
     if(iter != s_keycache.end() && iter->d_ttd > now) {
       keyset_t ret;
+      ret.reserve(iter->d_keys.size());
       for(const keyset_t::value_type& value :  iter->d_keys)
         ret.push_back(value);
       return ret;
@@ -507,6 +508,7 @@ DNSSECKeeper::keyset_t DNSSECKeeper::getKeys(const DNSName& zone, bool useCache)
     }
   }
   set_intersection(algoSEP.begin(), algoSEP.end(), algoNoSEP.begin(), algoNoSEP.end(), std::back_inserter(algoHasSeparateKSK));
+  retkeyset.reserve(dbkeyset.size());
 
   for(DNSBackend::KeyData& kd : dbkeyset)
   {