From: Ensar Sarajčić Date: Mon, 29 Dec 2025 18:34:07 +0000 (+0100) Subject: dnsdist: use new object in `addExtendedDNSError` X-Git-Tag: rec-5.4.0-beta1~68^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=refs%2Fpull%2F16680%2Fhead;p=thirdparty%2Fpdns.git dnsdist: use new object in `addExtendedDNSError` Signed-off-by: Ensar Sarajčić --- diff --git a/pdns/dnsdistdist/dnsdist-edns.cc b/pdns/dnsdistdist/dnsdist-edns.cc index 807c08468b..3074658510 100644 --- a/pdns/dnsdistdist/dnsdist-edns.cc +++ b/pdns/dnsdistdist/dnsdist-edns.cc @@ -57,7 +57,7 @@ std::pair, std::optional> getExtendedDNSErr return {infoCode, std::move(extraText)}; } -bool addExtendedDNSError(PacketBuffer& packet, size_t maximumPacketSize, uint16_t code, const std::string& extraStatus, bool clearExisting) +bool addExtendedDNSError(PacketBuffer& packet, size_t maximumPacketSize, const SetExtendedDNSErrorOperation& setErrorOp) { uint16_t optStart = 0; size_t optLen = 0; @@ -70,7 +70,7 @@ bool addExtendedDNSError(PacketBuffer& packet, size_t maximumPacketSize, uint16_ return false; } - EDNSExtendedError ede{.infoCode = code, .extraText = extraStatus}; + EDNSExtendedError ede{.infoCode = setErrorOp.error.infoCode, .extraText = setErrorOp.error.extraText}; auto edeOptionPayload = makeEDNSExtendedErrorOptString(ede); std::string edeOption; generateEDNSOption(EDNSOptionCode::EXTENDEDERROR, edeOptionPayload, edeOption); @@ -80,7 +80,7 @@ bool addExtendedDNSError(PacketBuffer& packet, size_t maximumPacketSize, uint16_ PacketBuffer newContent; bool ednsAdded = false; bool edeAdded = false; - if (!slowRewriteEDNSOptionInQueryWithRecords(packet, newContent, ednsAdded, EDNSOptionCode::EXTENDEDERROR, edeAdded, clearExisting, !clearExisting, edeOption)) { + if (!slowRewriteEDNSOptionInQueryWithRecords(packet, newContent, ednsAdded, EDNSOptionCode::EXTENDEDERROR, edeAdded, setErrorOp.clearExisting, !setErrorOp.clearExisting, edeOption)) { return false; } diff --git a/pdns/dnsdistdist/dnsdist-edns.hh b/pdns/dnsdistdist/dnsdist-edns.hh index cb518b2069..f1e89221af 100644 --- a/pdns/dnsdistdist/dnsdist-edns.hh +++ b/pdns/dnsdistdist/dnsdist-edns.hh @@ -37,5 +37,5 @@ struct SetExtendedDNSErrorOperation }; std::pair, std::optional> getExtendedDNSError(const PacketBuffer& packet); -bool addExtendedDNSError(PacketBuffer& packet, size_t maximumPacketSize, uint16_t code, const std::string& extraStatus, bool clearExisting); +bool addExtendedDNSError(PacketBuffer& packet, size_t maximumPacketSize, const SetExtendedDNSErrorOperation& setErrorOp); } diff --git a/pdns/dnsdistdist/dnsdist-tcp.cc b/pdns/dnsdistdist/dnsdist-tcp.cc index 295d4fa8cb..a3b40a82ed 100644 --- a/pdns/dnsdistdist/dnsdist-tcp.cc +++ b/pdns/dnsdistdist/dnsdist-tcp.cc @@ -1396,7 +1396,7 @@ static bool processXFRResponse(DNSResponse& dnsResponse) if (dnsResponse.ids.d_extendedErrors) { for (auto ede : *dnsResponse.ids.d_extendedErrors) { - dnsdist::edns::addExtendedDNSError(dnsResponse.getMutableData(), dnsResponse.getMaximumSize(), ede.error.infoCode, ede.error.extraText, ede.clearExisting); + dnsdist::edns::addExtendedDNSError(dnsResponse.getMutableData(), dnsResponse.getMaximumSize(), ede); } } diff --git a/pdns/dnsdistdist/dnsdist.cc b/pdns/dnsdistdist/dnsdist.cc index 72dc95191d..4a84f663fb 100644 --- a/pdns/dnsdistdist/dnsdist.cc +++ b/pdns/dnsdistdist/dnsdist.cc @@ -567,7 +567,7 @@ bool processResponseAfterRules(PacketBuffer& response, DNSResponse& dnsResponse, if (dnsResponse.ids.d_extendedErrors) { for (auto ede : *dnsResponse.ids.d_extendedErrors) { - dnsdist::edns::addExtendedDNSError(dnsResponse.getMutableData(), dnsResponse.getMaximumSize(), ede.error.infoCode, ede.error.extraText, ede.clearExisting); + 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) { - dnsdist::edns::addExtendedDNSError(dnsResponse.getMutableData(), dnsResponse.getMaximumSize(), ede.error.infoCode, ede.error.extraText, ede.clearExisting); + dnsdist::edns::addExtendedDNSError(dnsResponse.getMutableData(), dnsResponse.getMaximumSize(), ede); } }