]> git.ipfire.org Git - thirdparty/pdns.git/commitdiff
dnsdist: Fix small performance issues reported by Coverity
authorRemi Gacogne <remi.gacogne@powerdns.com>
Tue, 6 Jan 2026 13:59:41 +0000 (14:59 +0100)
committerRemi Gacogne <remi.gacogne@powerdns.com>
Tue, 6 Jan 2026 13:59:41 +0000 (14:59 +0100)
Mostly copying objects that could be moved, plus a few cases of
mistakenly copying objects while looping over them.

Signed-off-by: Remi Gacogne <remi.gacogne@powerdns.com>
pdns/dnsdistdist/dnsdist-configuration-yaml.cc
pdns/dnsdistdist/dnsdist-lua-actions.cc
pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc
pdns/dnsdistdist/dnsdist-lua-ffi.cc
pdns/dnsdistdist/dnsdist-tcp.cc
pdns/dnsdistdist/dnsdist.cc

index 41a00d2766d147878f6918088c2954614da587ec..f25e41d1f40e2a2ffe736002e4d826f2a5285828 100644 (file)
@@ -1724,7 +1724,7 @@ std::shared_ptr<DNSActionWrapper> getSetTraceAction(const SetTraceActionConfigur
     if (!logger && !(dnsdist::configuration::yaml::s_inClientMode || dnsdist::configuration::yaml::s_inConfigCheckMode)) {
       throw std::runtime_error("Unable to find the protobuf logger named '" + std::string(logger_name) + "'");
     }
-    loggers.push_back(logger);
+    loggers.push_back(std::move(logger));
   }
 
   dnsdist::actions::SetTraceActionConfiguration actionConfig{
index b5da5a10943acba62e93d80938b476081d74819a..1c3a5546b88dc7d113048fc3f2c7c20ddd7fb434 100644 (file)
@@ -254,7 +254,7 @@ void setupLuaActions(LuaContext& luaCtx)
           loggers.push_back(remote_logger.second);
         }
       }
-      config.remote_loggers = loggers;
+      config.remote_loggers = std::move(loggers);
     }
     config.value = value;
     config.trace_edns_option = trace_edns_option.value_or(65500);
index ae04d5f679600fbd6c50d151e3de7d1ab8bf69e5..56a96b515285edcdd54ecd1a88efd9fbcf269c0b 100644 (file)
@@ -702,14 +702,14 @@ void setupLuaBindingsDNSQuestion([[maybe_unused]] LuaContext& luaCtx)
     }
     ede.clearExisting = clearExistingEntries.value_or(true);
     if (ede.clearExisting) {
-      dnsResponse.ids.d_extendedErrors = std::make_unique<std::vector<dnsdist::edns::SetExtendedDNSErrorOperation>>(std::initializer_list<dnsdist::edns::SetExtendedDNSErrorOperation>({ede}));
+      dnsResponse.ids.d_extendedErrors = std::make_unique<std::vector<dnsdist::edns::SetExtendedDNSErrorOperation>>(std::initializer_list<dnsdist::edns::SetExtendedDNSErrorOperation>({std::move(ede)}));
     }
     else {
       if (!dnsResponse.ids.d_extendedErrors) {
-        dnsResponse.ids.d_extendedErrors = std::make_unique<std::vector<dnsdist::edns::SetExtendedDNSErrorOperation>>(std::initializer_list<dnsdist::edns::SetExtendedDNSErrorOperation>({ede}));
+        dnsResponse.ids.d_extendedErrors = std::make_unique<std::vector<dnsdist::edns::SetExtendedDNSErrorOperation>>(std::initializer_list<dnsdist::edns::SetExtendedDNSErrorOperation>({std::move(ede)}));
       }
       else {
-        dnsResponse.ids.d_extendedErrors->emplace_back(ede);
+        dnsResponse.ids.d_extendedErrors->emplace_back(std::move(ede));
       }
     }
   });
index 9d741c496909ca81f053aa9c23e9c633325ec325..1f43157e458e0e9f298e34d8f9ed563d98e04ac4 100644 (file)
@@ -541,7 +541,7 @@ void dnsdist_ffi_dnsquestion_set_extended_dns_error(dnsdist_ffi_dnsquestion_t* d
     ede.error.extraText = std::string(extraText, extraTextSize);
   }
   ede.clearExisting = true;
-  dnsQuestion->dq->ids.d_extendedErrors = std::make_unique<std::vector<dnsdist::edns::SetExtendedDNSErrorOperation>>(std::initializer_list<dnsdist::edns::SetExtendedDNSErrorOperation>({ede}));
+  dnsQuestion->dq->ids.d_extendedErrors = std::make_unique<std::vector<dnsdist::edns::SetExtendedDNSErrorOperation>>(std::initializer_list<dnsdist::edns::SetExtendedDNSErrorOperation>({std::move(ede)}));
 }
 
 void dnsdist_ffi_dnsquestion_add_extended_dns_error(dnsdist_ffi_dnsquestion_t* dnsQuestion, uint16_t infoCode, const char* extraText, size_t extraTextSize)
@@ -553,7 +553,7 @@ void dnsdist_ffi_dnsquestion_add_extended_dns_error(dnsdist_ffi_dnsquestion_t* d
   }
   ede.clearExisting = false;
   if (!dnsQuestion->dq->ids.d_extendedErrors) {
-    dnsQuestion->dq->ids.d_extendedErrors = std::make_unique<std::vector<dnsdist::edns::SetExtendedDNSErrorOperation>>(std::initializer_list<dnsdist::edns::SetExtendedDNSErrorOperation>({ede}));
+    dnsQuestion->dq->ids.d_extendedErrors = std::make_unique<std::vector<dnsdist::edns::SetExtendedDNSErrorOperation>>(std::initializer_list<dnsdist::edns::SetExtendedDNSErrorOperation>({std::move(ede)}));
   }
   else {
     dnsQuestion->dq->ids.d_extendedErrors->emplace_back(ede);
index 37a0864c82af877c3aab5b1882eafc8703292c01..844cbae1ae65ce41abddfd5b15e2f10648d2f19a 100644 (file)
@@ -1403,7 +1403,7 @@ static bool processXFRResponse(DNSResponse& dnsResponse)
   }
 
   if (dnsResponse.ids.d_extendedErrors) {
-    for (auto ede : *dnsResponse.ids.d_extendedErrors) {
+    for (const auto& ede : *dnsResponse.ids.d_extendedErrors) {
       dnsdist::edns::addExtendedDNSError(dnsResponse.getMutableData(), dnsResponse.getMaximumSize(), ede);
     }
   }
index 2b8c075733bf8e3fe24c7d91aa57b182f962075e..13d8de997696876fcfdec65fcfd0f5bc71df8950 100644 (file)
@@ -567,7 +567,7 @@ bool processResponseAfterRules(PacketBuffer& response, DNSResponse& dnsResponse,
   }
 
   if (dnsResponse.ids.d_extendedErrors) {
-    for (auto ede : *dnsResponse.ids.d_extendedErrors) {
+    for (const auto& ede : *dnsResponse.ids.d_extendedErrors) {
       dnsdist::edns::addExtendedDNSError(dnsResponse.getMutableData(), dnsResponse.getMaximumSize(), ede);
     }
   }
@@ -1407,7 +1407,7 @@ static bool prepareOutgoingResponse([[maybe_unused]] const ClientState& clientSt
   }
 
   if (dnsResponse.ids.d_extendedErrors) {
-    for (auto ede : *dnsResponse.ids.d_extendedErrors) {
+    for (const auto& ede : *dnsResponse.ids.d_extendedErrors) {
       dnsdist::edns::addExtendedDNSError(dnsResponse.getMutableData(), dnsResponse.getMaximumSize(), ede);
     }
   }