]> git.ipfire.org Git - thirdparty/pdns.git/commitdiff
auth: Reduce the number of allocations in apiServerZones()
authorRemi Gacogne <remi.gacogne@powerdns.com>
Fri, 17 Jan 2020 14:15:16 +0000 (15:15 +0100)
committerPeter van Dijk <peter.van.dijk@powerdns.com>
Thu, 5 Mar 2020 20:09:31 +0000 (21:09 +0100)
(cherry picked from commit c8b929d9f1b17cb3ca73a309172d6929254bf91c)

pdns/ws-auth.cc

index 6fb3637fa4ab39eb86cb75d1b8e4de3548b8534b..8a8c4336e9a325744d287f63c649e58558814b9a 100644 (file)
@@ -325,8 +325,10 @@ static inline string makeBackendRecordContent(const QType& qtype, const string&
 static Json::object getZoneInfo(const DomainInfo& di, DNSSECKeeper* dk) {
   string zoneId = apiZoneNameToId(di.zone);
   vector<string> masters;
-  for(const auto& m : di.masters)
+  masters.reserve(di.masters.size());
+  for(const auto& m : di.masters) {
     masters.push_back(m.toStringWithPortExcept(53));
+  }
 
   auto obj = Json::object {
     // id is the canonical lookup key, which doesn't actually match the name (in some cases)
@@ -335,7 +337,7 @@ static Json::object getZoneInfo(const DomainInfo& di, DNSSECKeeper* dk) {
     { "name", di.zone.toString() },
     { "kind", di.getKindString() },
     { "account", di.account },
-    { "masters", masters },
+    { "masters", std::move(masters) },
     { "serial", (double)di.serial },
     { "notified_serial", (double)di.notified_serial },
     { "last_check", (double)di.last_check }
@@ -1727,6 +1729,7 @@ static void apiServerZones(HttpRequest* req, HttpResponse* resp) {
   }
 
   Json::array doc;
+  doc.reserve(domains.size());
   for(const DomainInfo& di : domains) {
     doc.push_back(getZoneInfo(di, with_dnssec ? &dk : nullptr));
   }