]> granicus.if.org Git - pdns/commitdiff
recursor: Check size when adding the OPT RR
authorPieter Lexis <pieter.lexis@powerdns.com>
Tue, 20 Feb 2018 17:06:46 +0000 (18:06 +0100)
committerPieter Lexis <pieter.lexis@powerdns.com>
Wed, 30 May 2018 08:00:51 +0000 (10:00 +0200)
pdns/pdns_recursor.cc

index 3b0829e0d400f2d59ad27fd54e392c39eb1fd893..5947c775a13dfd99c7335e16e766ca85f8089d1e 100644 (file)
@@ -1304,6 +1304,10 @@ static void startDoResolve(void *p)
         }
       }
       pw.addOpt(g_udpTruncationThreshold, 0, DNSSECOK ? EDNSOpts::DNSSECOK : 0, opts);
+      if (pw.size() > maxanswersize) {
+        pw.rollback();
+        pw.addOpt(g_udpTruncationThreshold, 0, DNSSECOK ? EDNSOpts::DNSSECOK : 0, opts);
+      }
       pw.commit();
     }