]> git.ipfire.org Git - thirdparty/pdns.git/commitdiff
dnsdist: Use a smart pointer for DoH3 events
authorRemi Gacogne <remi.gacogne@powerdns.com>
Thu, 19 Feb 2026 11:02:43 +0000 (12:02 +0100)
committerRemi Gacogne <remi.gacogne@powerdns.com>
Thu, 2 Apr 2026 07:29:45 +0000 (09:29 +0200)
I don't see any issue right away but let's make sure we don't leak.

Signed-off-by: Remi Gacogne <remi.gacogne@powerdns.com>
pdns/dnsdistdist/doh3.cc

index 5c06491d3e477bc933ca050e4a8683c42a02810f..74784acf3ce75dd56c152bd33fda9db2eede2b16 100644 (file)
@@ -891,11 +891,13 @@ static void processH3Events(ClientState& clientState, DOH3Frontend& frontend, H3
     if (streamID < 0) {
       break;
     }
+    std::unique_ptr<quiche_h3_event, decltype(&quiche_h3_event_free)> eventPtr(event, quiche_h3_event_free);
+    event = nullptr;
     conn.d_headersBuffers.try_emplace(streamID, dnsdist::doh3::h3_headers_t{});
 
-    switch (quiche_h3_event_type(event)) {
+    switch (quiche_h3_event_type(eventPtr.get())) {
     case QUICHE_H3_EVENT_HEADERS: {
-      processH3HeaderEvent(clientState, frontend, conn, client, serverConnID, streamID, event);
+      processH3HeaderEvent(clientState, frontend, conn, client, serverConnID, streamID, eventPtr.get());
       break;
     }
     case QUICHE_H3_EVENT_DATA: {
@@ -908,8 +910,6 @@ static void processH3Events(ClientState& clientState, DOH3Frontend& frontend, H3
     case QUICHE_H3_EVENT_GOAWAY:
       break;
     }
-
-    quiche_h3_event_free(event);
   }
 }