]> git.ipfire.org Git - thirdparty/pdns.git/commitdiff
Add pdns_control command to the the list of XFR domains in queue
authorPieter Lexis <pieter.lexis@powerdns.com>
Tue, 16 Jun 2020 15:14:58 +0000 (17:14 +0200)
committerPieter Lexis <pieter.lexis@powerdns.com>
Wed, 17 Jun 2020 11:39:10 +0000 (13:39 +0200)
pdns/communicator.hh
pdns/dynhandler.cc
pdns/dynhandler.hh
pdns/receiver.cc
pdns/slavecommunicator.cc

index 643145c34923767d1f1ed46020d29a43820fde4e..9d718ba1f5f89af514c7dda237e232e74c97a45c 100644 (file)
@@ -169,6 +169,7 @@ public:
   void retrievalLoopThread();
   void sendNotification(int sock, const DNSName &domain, const ComboAddress& remote, uint16_t id, UeberBackend* B);
   bool notifyDomain(const DNSName &domain, UeberBackend* B);
+  vector<pair<DNSName, ComboAddress> > getSuckRequests();
 private:
   void loadArgsIntoSet(const char *listname, set<string> &listset);
   void makeNotifySockets();
index 4aef4a2f32fae33575989240a62b494720fa5abc..200f87ce27d4b09c36ae9aa72a1ad97a756e5755 100644 (file)
@@ -404,3 +404,11 @@ string DLTokenLogin(const vector<string>&parts, Utility::pid_t ppid)
   }
 #endif
 }
+
+string DLSuckRequests(const vector<string> &parts, Utility::pid_t ppid) {
+  string ret;
+  for (auto const &d: Communicator.getSuckRequests()) {
+    ret += d.first.toString() + " " + d.second.toString() + "\n";
+  }
+  return ret;
+}
index 6ac9d982ead8d25c6150d29072bce94938514743..8bcf8c5744b4adfb6b86f19ce5102c3495fd26fa 100644 (file)
@@ -54,3 +54,4 @@ string DLNotifyRetrieveHandler(const vector<string>&parts, Utility::pid_t ppid);
 string DLCurrentConfigHandler(const vector<string>&parts, Utility::pid_t ppid);
 string DLListZones(const vector<string>&parts, Utility::pid_t ppid);
 string DLTokenLogin(const vector<string>&parts, Utility::pid_t ppid);
+string DLSuckRequests(const vector<string> &parts, Utility::pid_t ppid);
index da65e8bf2591a9e3a5aaac613ec280a751b8c8a1..eff859df0312bc5c10ca160d381608f8073099cd 100644 (file)
@@ -590,6 +590,7 @@ int main(int argc, char **argv)
     DynListener::registerFunc("CURRENT-CONFIG",&DLCurrentConfigHandler, "retrieve the current configuration", "[diff|default]");
     DynListener::registerFunc("LIST-ZONES",&DLListZones, "show list of zones", "[master|slave|native]");
     DynListener::registerFunc("TOKEN-LOGIN", &DLTokenLogin, "Login to a PKCS#11 token", "<module> <slot> <pin>");
+    DynListener::registerFunc("XFR-QUEUE", &DLSuckRequests, "Get all requests for XFR in queue");
 
     if(!::arg()["tcp-control-address"].empty()) {
       DynListener* dlTCP=new DynListener(ComboAddress(::arg()["tcp-control-address"], ::arg().asNum("tcp-control-port")));
index 1794cc025464fc66893ead9b866d679c2f073862..d46020e1472aaf2948716153b839b8cdd6b04320 100644 (file)
@@ -1003,3 +1003,13 @@ void CommunicatorClass::slaveRefresh(PacketHandler *P)
     }
   }
 }
+
+vector<pair<DNSName, ComboAddress> > CommunicatorClass::getSuckRequests() {
+  vector<pair<DNSName, ComboAddress> > ret;
+  std::lock_guard<std::mutex> l(d_lock);
+  ret.reserve(d_suckdomains.size());
+  for (auto const &d : d_suckdomains) {
+    ret.push_back(make_pair(d.domain, d.master));
+  }
+  return ret;
+}