]> git.ipfire.org Git - thirdparty/pdns.git/commitdiff
dnsdist: Clarify that our DoQ's `handleResponse` consumes the response 16504/head
authorRemi Gacogne <remi.gacogne@powerdns.com>
Fri, 14 Nov 2025 09:43:10 +0000 (10:43 +0100)
committerRemi Gacogne <remi.gacogne@powerdns.com>
Fri, 14 Nov 2025 09:43:10 +0000 (10:43 +0100)
Signed-off-by: Remi Gacogne <remi.gacogne@powerdns.com>
pdns/dnsdistdist/doq.cc

index d2aa3896235f234e738430e756bbece582f50ddd..e4bb136aa2f221d6556362a8067d99ebe46890da 100644 (file)
@@ -291,7 +291,7 @@ static bool tryWriteResponse(Connection& conn, const uint64_t streamID, PacketBu
   return true;
 }
 
-static void handleResponse(DOQFrontend& frontend, Connection& conn, const uint64_t streamID, PacketBuffer& response)
+static void handleResponse(DOQFrontend& frontend, Connection& conn, const uint64_t streamID, PacketBuffer&& response)
 {
   if (response.empty()) {
     ++frontend.d_errorResponses;
@@ -403,7 +403,7 @@ static void processDOQQuery(DOQUnitUniquePtr&& doqUnit)
   const auto handleImmediateResponse = [](DOQUnitUniquePtr&& unit, [[maybe_unused]] const char* reason) {
     DEBUGLOG("handleImmediateResponse() reason=" << reason);
     auto conn = getConnection(unit->dsc->df->d_server_config->d_connections, unit->serverConnID);
-    handleResponse(*unit->dsc->df, *conn, unit->streamID, unit->response);
+    handleResponse(*unit->dsc->df, *conn, unit->streamID, std::move(unit->response));
     unit->ids.doqu.reset();
   };
 
@@ -584,7 +584,7 @@ static void flushResponses(pdns::channel::Receiver<DOQUnit>& receiver)
       auto unit = std::move(*tmp);
       auto conn = getConnection(unit->dsc->df->d_server_config->d_connections, unit->serverConnID);
       if (conn) {
-        handleResponse(*unit->dsc->df, *conn, unit->streamID, unit->response);
+        handleResponse(*unit->dsc->df, *conn, unit->streamID, std::move(unit->response));
       }
     }
     catch (const std::exception& e) {