]> git.ipfire.org Git - thirdparty/pdns.git/commitdiff
Switch to std::fcuntion for broadcast functions. Fixes a mem leak report by scanbuild.
authorOtto Moerbeek <otto.moerbeek@open-xchange.com>
Mon, 28 Mar 2022 14:53:28 +0000 (16:53 +0200)
committerOtto Moerbeek <otto.moerbeek@open-xchange.com>
Mon, 28 Mar 2022 14:53:28 +0000 (16:53 +0200)
pdns/recursordist/rec-main.cc
pdns/syncres.hh

index dc9b1f3e85019925108955e35c9482b57155e946..65c25bdffab4e815af6e90b3e288c6dbd0e85985 100644 (file)
@@ -1128,7 +1128,7 @@ static vector<pair<DNSName, uint16_t>>& operator+=(vector<pair<DNSName, uint16_t
 // metrics.
 // Note that this currently skips the handler, but includes the taskThread(s).
 template <class T>
-T broadcastAccFunction(const boost::function<T*()>& func)
+T broadcastAccFunction(const std::function<T*()>& func)
 {
   if (!RecThreadInfo::self().isHandler()) {
     g_log << Logger::Error << "broadcastAccFunction has been called by a worker (" << RecThreadInfo::id() << ")" << endl;
@@ -1165,12 +1165,12 @@ T broadcastAccFunction(const boost::function<T*()>& func)
   return ret;
 }
 
-template string broadcastAccFunction(const boost::function<string*()>& fun); // explicit instantiation
-template RecursorControlChannel::Answer broadcastAccFunction(const boost::function<RecursorControlChannel::Answer*()>& fun); // explicit instantiation
-template uint64_t broadcastAccFunction(const boost::function<uint64_t*()>& fun); // explicit instantiation
-template vector<ComboAddress> broadcastAccFunction(const boost::function<vector<ComboAddress>*()>& fun); // explicit instantiation
-template vector<pair<DNSName, uint16_t>> broadcastAccFunction(const boost::function<vector<pair<DNSName, uint16_t>>*()>& fun); // explicit instantiation
-template ThreadTimes broadcastAccFunction(const boost::function<ThreadTimes*()>& fun);
+template string broadcastAccFunction(const std::function<string*()>& fun); // explicit instantiation
+template RecursorControlChannel::Answer broadcastAccFunction(const std::function<RecursorControlChannel::Answer*()>& fun); // explicit instantiation
+template uint64_t broadcastAccFunction(const std::function<uint64_t*()>& fun); // explicit instantiation
+template vector<ComboAddress> broadcastAccFunction(const std::function<vector<ComboAddress>*()>& fun); // explicit instantiation
+template vector<pair<DNSName, uint16_t>> broadcastAccFunction(const std::function<vector<pair<DNSName, uint16_t>>*()>& fun); // explicit instantiation
+template ThreadTimes broadcastAccFunction(const std::function<ThreadTimes*()>& fun);
 
 static int serviceMain(int argc, char* argv[])
 {
index cc37ca462971932ed8ec438c69ecab360e58430c..c9e3abc0f1d446a17ae685a3c46189060c986a1a 100644 (file)
@@ -1112,7 +1112,7 @@ extern bool g_lowercaseOutgoing;
 
 
 std::string reloadZoneConfiguration();
-typedef boost::function<void*(void)> pipefunc_t;
+typedef std::function<void*(void)> pipefunc_t;
 void broadcastFunction(const pipefunc_t& func);
 void distributeAsyncFunction(const std::string& question, const pipefunc_t& func);
 
@@ -1122,7 +1122,7 @@ int followCNAMERecords(std::vector<DNSRecord>& ret, const QType qtype, int oldre
 int getFakeAAAARecords(const DNSName& qname, ComboAddress prefix, vector<DNSRecord>& ret);
 int getFakePTRRecords(const DNSName& qname, vector<DNSRecord>& ret);
 
-template<class T> T broadcastAccFunction(const boost::function<T*()>& func);
+template<class T> T broadcastAccFunction(const std::function<T*()>& func);
 
 typedef std::unordered_set<DNSName> notifyset_t;
 std::tuple<std::shared_ptr<SyncRes::domainmap_t>, std::shared_ptr<notifyset_t>> parseZoneConfiguration();