]> git.ipfire.org Git - thirdparty/pdns.git/commitdiff
dnsdist: Add DISABLE_DELAY_PIPE option
authorRemi Gacogne <remi.gacogne@powerdns.com>
Wed, 6 Jul 2022 16:20:24 +0000 (18:20 +0200)
committerRemi Gacogne <remi.gacogne@powerdns.com>
Wed, 21 Sep 2022 13:23:23 +0000 (15:23 +0200)
pdns/dnsdist.cc

index f151a612938816b353651c4f48ce3cab1aa089e8..71a7efc36752ce4cbb8de73c9f993035f62c1ea5 100644 (file)
@@ -207,6 +207,7 @@ static void truncateTC(PacketBuffer& packet, size_t maximumSize, unsigned int qn
   }
 }
 
+#ifndef DISABLE_DELAY_PIPE
 struct DelayedPacket
 {
   int fd;
@@ -223,7 +224,8 @@ struct DelayedPacket
   }
 };
 
-DelayPipe<DelayedPacket>* g_delay = nullptr;
+static DelayPipe<DelayedPacket>* g_delay = nullptr;
+#endif /* DISABLE_DELAY_PIPE */
 
 std::string DNSQuestion::getTrailingData() const
 {
@@ -584,16 +586,17 @@ static size_t getMaximumIncomingPacketSize(const ClientState& cs)
 
 static bool sendUDPResponse(int origFD, const PacketBuffer& response, const int delayMsec, const ComboAddress& origDest, const ComboAddress& origRemote)
 {
-  if(delayMsec && g_delay) {
+#ifndef DISABLE_DELAY_PIPE
+  if (delayMsec && g_delay) {
     DelayedPacket dp{origFD, response, origRemote, origDest};
     g_delay->submit(dp, delayMsec);
+    return true;
   }
-  else {
-    ssize_t res = sendfromto(origFD, response.data(), response.size(), 0, origDest, origRemote);
-    if (res == -1) {
-      int err = errno;
-      vinfolog("Error sending response to %s: %s", origRemote.toStringWithPort(), stringerror(err));
-    }
+#endif /* DISABLE_DELAY_PIPE */
+  ssize_t res = sendfromto(origFD, response.data(), response.size(), 0, origDest, origRemote);
+  if (res == -1) {
+    int err = errno;
+    vinfolog("Error sending response to %s: %s", origRemote.toStringWithPort(), stringerror(err));
   }
 
   return true;
@@ -2660,7 +2663,9 @@ int main(int argc, char** argv)
     }
 
     /* this need to be done _after_ dropping privileges */
+#ifndef DISABLE_DELAY_PIPE
     g_delay = new DelayPipe<DelayedPacket>();
+#endif /* DISABLE_DELAY_PIPE */
 
     if (g_snmpAgent) {
       g_snmpAgent->run();