]> git.ipfire.org Git - thirdparty/pdns.git/commitdiff
dnsdist: Only update 'ednsAdded' and 'optionAdded' if we process the query 10907/head
authorRemi Gacogne <remi.gacogne@powerdns.com>
Fri, 29 Oct 2021 13:10:03 +0000 (15:10 +0200)
committerRemi Gacogne <remi.gacogne@powerdns.com>
Fri, 29 Oct 2021 13:10:03 +0000 (15:10 +0200)
pdns/dnsdist-ecs.cc

index 0eda3ab993f71bab30ec36a586908786a5dafa07..e4e3bd6e8bd5b0ba4ba6819b26ed030e84ee55d8 100644 (file)
@@ -154,9 +154,6 @@ bool slowRewriteEDNSOptionInQueryWithRecords(const PacketBuffer& initialPacket,
   assert(initialPacket.size() >= sizeof(dnsheader));
   const struct dnsheader* dh = reinterpret_cast<const struct dnsheader*>(initialPacket.data());
 
-  optionAdded = false;
-  ednsAdded = true;
-
   if (ntohs(dh->qdcount) == 0) {
     return false;
   }
@@ -165,6 +162,9 @@ bool slowRewriteEDNSOptionInQueryWithRecords(const PacketBuffer& initialPacket,
     throw std::runtime_error(std::string(__PRETTY_FUNCTION__) + " should not be called for queries that have no records");
   }
 
+  optionAdded = false;
+  ednsAdded = true;
+
   PacketReader pr(pdns_string_view(reinterpret_cast<const char*>(initialPacket.data()), initialPacket.size()));
 
   size_t idx = 0;
@@ -589,8 +589,6 @@ bool handleEDNSClientSubnet(PacketBuffer& packet, const size_t maximumSize, cons
     newContent.reserve(packet.size());
 
     if (!slowRewriteEDNSOptionInQueryWithRecords(packet, newContent, ednsAdded, EDNSOptionCode::ECS, ecsAdded, overrideExisting, newECSOption)) {
-      ednsAdded = false;
-      ecsAdded = false;
       return false;
     }