]> git.ipfire.org Git - thirdparty/pdns.git/commitdiff
Proces review comments by rgacogne, thanks! 11881/head
authorOtto Moerbeek <otto.moerbeek@open-xchange.com>
Fri, 26 Aug 2022 13:02:46 +0000 (15:02 +0200)
committerOtto Moerbeek <otto.moerbeek@open-xchange.com>
Fri, 26 Aug 2022 13:02:46 +0000 (15:02 +0200)
pdns/dnsdist-lua-actions.cc
pdns/fstrm_logger.hh
pdns/lwres.cc
pdns/lwres.hh
pdns/remote_logger.cc
pdns/remote_logger.hh

index 5004d3f1dbd01d1232175a4f67d12a19a95a4423..cc1ec21d27397b8da93c4fc2464573205ada8c90 100644 (file)
@@ -1433,7 +1433,7 @@ static DnstapMessage::ProtocolType ProtocolToDNSTap(dnsdist::Protocol protocol)
   throw std::runtime_error("Unhandled protocol for dnstap: " + protocol.toPrettyString());
 }
 
-void remoteLoggerQueueData(RemoteLoggerInterface& r, const std::string& data)
+static void remoteLoggerQueueData(RemoteLoggerInterface& r, const std::string& data)
 {
   auto ret = r.queueData(data);
 
@@ -1441,15 +1441,15 @@ void remoteLoggerQueueData(RemoteLoggerInterface& r, const std::string& data)
   case RemoteLoggerInterface::Result::Queued:
     break;
   case RemoteLoggerInterface::Result::PipeFull: {
-    vinfolog("%s: queue full, dropping.", r.name().c_str());
+    vinfolog("%s: %s", r.name(), RemoteLoggerInterface::toErrorString(ret));
     break;
   }
   case RemoteLoggerInterface::Result::TooLarge: {
-    warnlog("%s: Not sending too large protobuf message", r.name().c_str());
+    warnlog("%s: %s", r.name(), RemoteLoggerInterface::toErrorString(ret));
     break;
   }
   case RemoteLoggerInterface::Result::OtherError:
-    warnlog("%s: submitting to queue failed", r.name().c_str());
+    warnlog("%s: %s", r.name(), RemoteLoggerInterface::toErrorString(ret));
   }
 }
 
index 624f67c7eb31c9f46385fd0ad02688eddaa40aad..21ec29890626dfe2cea1268320c97a261c6ceff1 100644 (file)
@@ -39,7 +39,7 @@ public:
   FrameStreamLogger(int family, const std::string& address, bool connect, const std::unordered_map<string,unsigned>& options = std::unordered_map<string,unsigned>());
   ~FrameStreamLogger();
   [[nodiscard]] RemoteLoggerInterface::Result queueData(const std::string& data) override;
-  std::string name() const override
+  const std::string name() const override
   {
     return "framestream";
   }
index d9ae39f14f20c9d4a707a4416cd84b18286fb472..422e349063667db5f7781732e2fed8262dae3b52 100644 (file)
@@ -72,22 +72,22 @@ void remoteLoggerQueueData(RemoteLoggerInterface& r, const std::string& data)
   case RemoteLoggerInterface::Result::Queued:
     break;
   case RemoteLoggerInterface::Result::PipeFull: {
+    const auto msg = RemoteLoggerInterface::toErrorString(ret);
     const auto name = r.name();
-    const auto msg = "queue full, dropping";
     SLOG(g_log << Logger::Debug << name << ": " << msg <<std::endl,
          g_slog->withName(name)->info(Logr::Debug, msg));
     break;
   }
   case RemoteLoggerInterface::Result::TooLarge: {
+    const auto msg = RemoteLoggerInterface::toErrorString(ret);
     const auto name = r.name();
-    const auto msg = "Not sending too large protobuf message";
     SLOG(g_log << Logger::Notice << name << ": " << msg <<endl,
          g_slog->withName(name)->info(Logr::Debug, msg));
     break;
   }
   case RemoteLoggerInterface::Result::OtherError: {
+    const auto msg = RemoteLoggerInterface::toErrorString(ret);
     const auto name = r.name();
-    const auto msg = "submitting to queue failed";
     SLOG(g_log << Logger::Warning << name << ": " << msg << std::endl,
          g_slog->withName(name)->info(Logr::Warning, msg));
     break;
index 9e0a4599a70be9b44483af2734d153cab007a46d..97e8d015982f679372aa15e7d319ca7f25b98a71 100644 (file)
@@ -46,6 +46,9 @@
 
 #include "logging.hh"
 
+// Helper to be defined by main program: queue data and log based on return value of queueData()
+void remoteLoggerQueueData(RemoteLoggerInterface&, const std::string&);
+
 extern std::shared_ptr<Logr::Logger> g_slogout;
 
 class LWResException : public PDNSException
index 0d3c37625c1a0bd7562e76c1a9ebcb50beb5b4b8..961651169954a55b3787519521a8358e126a6f50 100644 (file)
@@ -95,6 +95,19 @@ bool CircularWriteBuffer::flush(int fd)
   return true;
 }
 
+const std::string& RemoteLoggerInterface::toErrorString(Result r)
+{
+  static const std::array<std::string,5> str = {
+    "Queued",
+    "Queue full, dropping",
+    "Not sending too large protobuf message",
+    "Submiting to queue failed",
+    "?"
+  };
+  auto i = static_cast<unsigned int>(r);
+  return str[std::min(i, 4U)];
+}
+
 RemoteLogger::RemoteLogger(const ComboAddress& remote, uint16_t timeout, uint64_t maxQueuedBytes, uint8_t reconnectWaitTime, bool asyncConnect): d_remote(remote), d_timeout(timeout), d_reconnectWaitTime(reconnectWaitTime), d_asyncConnect(asyncConnect), d_runtime({CircularWriteBuffer(maxQueuedBytes), nullptr})
 {
   if (!d_asyncConnect) {
@@ -240,3 +253,4 @@ RemoteLogger::~RemoteLogger()
 
   d_thread.join();
 }
+
index 7c59626343bb60ccf13fdb39bb1db074363d14e4..72b1ec5e31257c78267319134016b137ccacb0b4 100644 (file)
@@ -61,11 +61,12 @@ class RemoteLoggerInterface
 {
 public:
   enum class Result : uint8_t { Queued, PipeFull, TooLarge, OtherError };
+  static const std::string& toErrorString(Result r);
 
   virtual ~RemoteLoggerInterface() {};
   virtual Result queueData(const std::string& data) = 0;
   virtual std::string toString() const = 0;
-  virtual std::string name() const = 0;
+  virtual const std::string name() const = 0;
   bool logQueries(void) const { return d_logQueries; }
   bool logResponses(void) const { return d_logResponses; }
   void setLogQueries(bool flag) { d_logQueries = flag; }
@@ -91,7 +92,7 @@ public:
   ~RemoteLogger();
 
   [[nodiscard]] Result queueData(const std::string& data) override;
-  std::string name() const override
+  const std::string name() const override
   {
     return "protobuf";
   }
@@ -126,5 +127,3 @@ private:
   std::thread d_thread;
 };
 
-// Helper to be defined by main program: queue data and log based on return value of queueData()
-void remoteLoggerQueueData(RemoteLoggerInterface&, const std::string&);