From: Pieter Lexis Date: Tue, 25 Nov 2025 09:49:10 +0000 (+0100) Subject: chore(dnsdist): Send delayed protobuf through RAII X-Git-Tag: rec-5.4.0-beta1~65^2~12 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=bd4bb47ffffdb4041996d8686f036c2fa58f66ae;p=thirdparty%2Fpdns.git chore(dnsdist): Send delayed protobuf through RAII --- diff --git a/pdns/dnsdistdist/dnsdist-idstate.cc b/pdns/dnsdistdist/dnsdist-idstate.cc index 7e80710a71..efb2c0af37 100644 --- a/pdns/dnsdistdist/dnsdist-idstate.cc +++ b/pdns/dnsdistdist/dnsdist-idstate.cc @@ -60,12 +60,12 @@ InternalQueryState InternalQueryState::partialCloneForXFR() const return ids; } -void InternalQueryState::sendDelayedProtobufMessages() const +InternalQueryState::~InternalQueryState() { #ifndef DISABLE_PROTOBUF static thread_local string otPBBuf; otPBBuf.clear(); - if (tracingEnabled) { + if (tracingEnabled && d_OTTracer != nullptr) { pdns::ProtoZero::Message msg{otPBBuf}; msg.setOpenTelemetryData(d_OTTracer->getOTProtobuf()); } diff --git a/pdns/dnsdistdist/dnsdist-idstate.hh b/pdns/dnsdistdist/dnsdist-idstate.hh index cb2b2be4ba..7259f96f6a 100644 --- a/pdns/dnsdistdist/dnsdist-idstate.hh +++ b/pdns/dnsdistdist/dnsdist-idstate.hh @@ -163,6 +163,7 @@ struct InternalQueryState InternalQueryState(const InternalQueryState& orig) = delete; InternalQueryState& operator=(const InternalQueryState& orig) = delete; + ~InternalQueryState(); bool isXSK() const noexcept { @@ -173,8 +174,6 @@ struct InternalQueryState #endif /* HAVE_XSK */ } - void sendDelayedProtobufMessages() const; - InternalQueryState partialCloneForXFR() const; std::optional subnet{std::nullopt}; // 40 diff --git a/pdns/dnsdistdist/dnsdist.cc b/pdns/dnsdistdist/dnsdist.cc index 4e85d911b0..877db4f2ad 100644 --- a/pdns/dnsdistdist/dnsdist.cc +++ b/pdns/dnsdistdist/dnsdist.cc @@ -642,7 +642,6 @@ bool sendUDPResponse(int origFD, const PacketBuffer& response, [[maybe_unused]] void handleResponseSent(const InternalQueryState& ids, double udiff, const ComboAddress& client, const ComboAddress& backend, unsigned int size, const dnsheader& cleartextDH, dnsdist::Protocol outgoingProtocol, bool fromBackend) { handleResponseSent(ids.qname, ids.qtype, udiff, client, backend, size, cleartextDH, outgoingProtocol, ids.protocol, fromBackend); - ids.sendDelayedProtobufMessages(); } void handleResponseSent(const DNSName& qname, const QType& qtype, double udiff, const ComboAddress& client, const ComboAddress& backend, unsigned int size, const dnsheader& cleartextDH, dnsdist::Protocol outgoingProtocol, dnsdist::Protocol incomingProtocol, bool fromBackend)