]> git.ipfire.org Git - thirdparty/pdns.git/commitdiff
add setting edns-outgoing-bufsize for setting the default EDNS bufsize in recursor...
authorbert hubert <bert.hubert@netherlabs.nl>
Thu, 26 Nov 2015 08:20:49 +0000 (09:20 +0100)
committerbert hubert <bert.hubert@netherlabs.nl>
Thu, 26 Nov 2015 08:28:46 +0000 (09:28 +0100)
pdns/lwres.cc
pdns/pdns_recursor.cc
pdns/syncres.hh

index b8f657fde3730bee61e5cc5fd272e41e7d643327..6bd17220adb24b6062f35872b9c5930c03de96a4 100644 (file)
@@ -56,7 +56,7 @@
 int asyncresolve(const ComboAddress& ip, const DNSName& domain, int type, bool doTCP, bool sendRDQuery, int EDNS0Level, struct timeval* now, boost::optional<Netmask>& srcmask, LWResult *lwr)
 {
   int len; 
-  int bufsize=1500;
+  int bufsize=g_outgoingEDNSBufsize;
   scoped_array<unsigned char> buf(new unsigned char[bufsize]);
   vector<uint8_t> vpacket;
   //  string mapped0x20=dns0x20(domain);
@@ -77,7 +77,7 @@ int asyncresolve(const ComboAddress& ip, const DNSName& domain, int type, bool d
       srcmask=boost::optional<Netmask>(); // this is also our return value
     }
 
-    pw.addOpt(1200, 0, EDNSOpts::DNSSECOK, opts); // 1200 bytes answer size
+    pw.addOpt(g_outgoingEDNSBufsize, 0, EDNSOpts::DNSSECOK, opts); 
     pw.commit();
   }
   lwr->d_rcode = 0;
index 81ccf24150af238966f5ca0df2298f08501501cd..bcd6d45c96bcc54041a14af1b972012e59f3ebe0 100644 (file)
@@ -88,7 +88,7 @@ unsigned int g_networkTimeoutMsec;
 uint64_t g_latencyStatSize;
 bool g_logCommonErrors;
 bool g_anyToTcp;
-uint16_t g_udpTruncationThreshold;
+uint16_t g_udpTruncationThreshold, g_outgoingEDNSBufsize;
 __thread shared_ptr<RecursorLua>* t_pdl;
 
 __thread addrringbuf_t* t_remotes, *t_servfailremotes, *t_largeanswerremotes;
@@ -2163,7 +2163,7 @@ int serviceMain(int argc, char*argv[])
   }
 
   setupDelegationOnly();
-
+  g_outgoingEDNSBufsize=::arg().asNum("edns-outgoing-bufsize");
 
   if(::arg()["trace"]=="fail") {
     SyncRes::setDefaultLogMode(SyncRes::Store);
@@ -2552,6 +2552,7 @@ int main(int argc, char **argv)
     ::arg().setSwitch( "root-nx-trust", "If set, believe that an NXDOMAIN from the root means the TLD does not exist")="no";
     ::arg().setSwitch( "any-to-tcp","Answer ANY queries with tc=1, shunting to TCP" )="no";
     ::arg().set("udp-truncation-threshold", "Maximum UDP response size before we truncate")="1680";
+    ::arg().set("edns-outgoing-bufsize", "Outgoing EDNS buffer size")="1680";
     ::arg().set("minimum-ttl-override", "Set under adverse conditions, a minimum TTL")="0";
     ::arg().set("max-qperq", "Maximum outgoing queries per query")="50";
     ::arg().set("max-total-msec", "Maximum total wall-clock time per query in milliseconds, 0 for unlimited")="7000";
index 35c3a32d0c5720bf984922998a3e6983a7dc17bf..313db996a81659c38532f7a02b8c15b8834cb22a 100644 (file)
@@ -633,6 +633,7 @@ void parseACLs();
 extern RecursorStats g_stats;
 extern unsigned int g_numThreads;
 extern SuffixMatchNode g_delegationOnly;
+extern uint16_t g_outgoingEDNSBufsize;
 std::string reloadAuthAndForwards();
 ComboAddress parseIPAndPort(const std::string& input, uint16_t port);
 ComboAddress getQueryLocalAddress(int family, uint16_t port);