]> git.ipfire.org Git - thirdparty/pdns.git/commitdiff
Drop setLocalBindAddress bool parameter, pass
authorFredericDT <frederic.dt.twh@gmail.com>
Wed, 31 Aug 2022 08:02:19 +0000 (16:02 +0800)
committerFredericDT <frederic.dt.twh@gmail.com>
Wed, 31 Aug 2022 08:02:19 +0000 (16:02 +0800)
boost::optional<ComboAddress> instead.

According to https://github.com/PowerDNS/pdns/pull/11889

> An extra boolean flag is no needed for boost::optional<x>

Thanks Moerbeek and Gacogne

Signed-off-by: FredericDT <frederic.dt.twh@gmail.com>
pdns/dnsdist-lua-actions.cc

index ea9ccbc0a42418d20f1a8d6d6c4b76afb218d343..637e5fc1092d857a6c3617395d6a8e424a29121d 100644 (file)
@@ -127,7 +127,7 @@ class TeeAction : public DNSAction
 {
 public:
   // this action does not stop the processing
-  TeeAction(const ComboAddress& rca, const ComboAddress& lca, bool setLocalBindAddress=false, bool addECS=false);
+  TeeAction(const ComboAddress& rca, const boost::optional<ComboAddress>& lca, bool addECS=false);
   ~TeeAction() override;
   DNSAction::Action operator()(DNSQuestion* dq, std::string* ruleresult) const override;
   std::string toString() const override;
@@ -135,7 +135,7 @@ public:
 
 private:
   ComboAddress d_remote;
-  ComboAddress d_local;
+  boost::optional<ComboAddress> d_local;
   std::thread d_worker;
   void worker();
 
@@ -153,17 +153,16 @@ private:
   mutable stat_t d_tcpdrops{0};
   stat_t d_otherrcode{0};
   std::atomic<bool> d_pleaseQuit{false};
-  bool d_setLocalBindAddress{false};
   bool d_addECS{false};
 };
 
-TeeAction::TeeAction(const ComboAddress& rca, const ComboAddress& lca, bool setLocalBindAddress, bool addECS) 
-  : d_remote(rca), d_local(lca), d_setLocalBindAddress(setLocalBindAddress), d_addECS(addECS)
+TeeAction::TeeAction(const ComboAddress& rca, const boost::optional<ComboAddress>& lca, bool addECS) 
+  : d_remote(rca), d_local(lca), d_addECS(addECS)
 {
   d_fd=SSocket(d_remote.sin4.sin_family, SOCK_DGRAM, 0);
   try {
-    if (d_setLocalBindAddress) {
-      SBind(d_fd, d_local);
+    if (d_local) {
+      SBind(d_fd, *d_local);
     }
     SConnect(d_fd, d_remote);
     setNonBlocking(d_fd);
@@ -2423,7 +2422,12 @@ void setupLuaActions(LuaContext& luaCtx)
 #endif /* DISABLE_PROTOBUF */
 
   luaCtx.writeFunction("TeeAction", [](const std::string& remote, boost::optional<bool> addECS, boost::optional<std::string> local) {
-      return std::shared_ptr<DNSAction>(new TeeAction(ComboAddress(remote, 53), ComboAddress(local ? *local : "0.0.0.0", 0), local ? true : false, addECS ? *addECS : false));
+      boost::optional<ComboAddress> localAddr{boost::none};
+      if (local) {
+        localAddr = ComboAddress(*local, 0);
+      }
+
+      return std::shared_ptr<DNSAction>(new TeeAction(ComboAddress(remote, 53), localAddr, addECS ? *addECS : false));
     });
 
   luaCtx.writeFunction("SetECSPrefixLengthAction", [](uint16_t v4PrefixLength, uint16_t v6PrefixLength) {