diff --git a/src/jamidht/namedirectory.cpp b/src/jamidht/namedirectory.cpp index d3986647a463294ed15c24927956102abe3a61de..ee78294e43d21b0b11a7b9bb1aacbd07e0d0d381 100644 --- a/src/jamidht/namedirectory.cpp +++ b/src/jamidht/namedirectory.cpp @@ -109,6 +109,9 @@ NameDirectory::instance(const std::string& server, std::shared_ptr<dht::Logger> std::lock_guard<std::mutex> lock(instanceMtx); static std::map<std::string, NameDirectory> instances {}; + auto it = instances.find(s); + if (it != instances.end()) + return it->second; auto r = instances.emplace(std::piecewise_construct, std::forward_as_tuple(s), std::forward_as_tuple(s, l)); diff --git a/src/jamidht/namedirectory.h b/src/jamidht/namedirectory.h index f3b18f42693e00a9bd5366ed1aa500003e5a9aea..4f62ef93d633b6edf6e545ae7b63d916265c7b27 100644 --- a/src/jamidht/namedirectory.h +++ b/src/jamidht/namedirectory.h @@ -60,7 +60,6 @@ public: using LookupCallback = std::function<void(const std::string& result, Response response)>; using RegistrationCallback = std::function<void(RegistrationResponse response)>; - NameDirectory() {} NameDirectory(const std::string& s, std::shared_ptr<dht::Logger> l = {}); void load(); @@ -84,6 +83,7 @@ public: private: NON_COPYABLE(NameDirectory); NameDirectory(NameDirectory&&) = delete; + NameDirectory& operator=(NameDirectory&&) = delete; constexpr static const char* const DEFAULT_SERVER_HOST = "ns.jami.net"; const std::string serverHost_ {DEFAULT_SERVER_HOST};