]> git.ipfire.org Git - thirdparty/pdns.git/commitdiff
dnsdist: Compress DNS names when changing the name in a packet 16967/head
authorRemi Gacogne <remi.gacogne@powerdns.com>
Tue, 10 Mar 2026 12:01:48 +0000 (13:01 +0100)
committerRemi Gacogne <remi.gacogne@powerdns.com>
Tue, 10 Mar 2026 12:01:48 +0000 (13:01 +0100)
Otherwise the resulting packet might be bigger than needed.

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

index 7460d801b6478e1fd619995a1f9fb32e792b76fb..e7203561460c8d0fa2f6368f41665a9bfb064852 100644 (file)
@@ -132,7 +132,7 @@ bool changeNameInDNSPacket(PacketBuffer& initialPacket, const DNSName& from, con
     pw.startRecord(rrname, ah.d_type, ah.d_ttl, ah.d_class, place, true);
     if (nameOnlyTypes.count(ah.d_type)) {
       rrname = pr.getName();
-      pw.xfrName(rrname);
+      pw.xfrName(rrname, true);
     }
     else if (noNameTypes.count(ah.d_type)) {
       pr.xfrBlob(blob);
@@ -147,13 +147,13 @@ bool changeNameInDNSPacket(PacketBuffer& initialPacket, const DNSName& from, con
       auto prio = pr.get16BitInt();
       rrname = pr.getName();
       pw.xfr16BitInt(prio);
-      pw.xfrName(rrname);
+      pw.xfrName(rrname, true);
     }
     else if (ah.d_type == QType::SOA) {
       auto mname = pr.getName();
-      pw.xfrName(mname);
+      pw.xfrName(mname, true);
       auto rname = pr.getName();
-      pw.xfrName(rname);
+      pw.xfrName(rname, true);
       /* serial */
       pw.xfr32BitInt(pr.get32BitInt());
       /* refresh */
@@ -173,7 +173,7 @@ bool changeNameInDNSPacket(PacketBuffer& initialPacket, const DNSName& from, con
       /* port */
       pw.xfr16BitInt(pr.get16BitInt());
       auto target = pr.getName();
-      pw.xfrName(target);
+      pw.xfrName(target, true);
     }
     else {
       /* sorry, unsafe type */