diff --git a/src/jamidht/account_manager.h b/src/jamidht/account_manager.h index 3f0feb8be1bd186524b8dd4cf20f4728b5995964..da2bf2680e2c92091421688f62f329d345cf954b 100644 --- a/src/jamidht/account_manager.h +++ b/src/jamidht/account_manager.h @@ -72,11 +72,9 @@ public: AccountManager( const std::string& path, OnAsync&& onAsync, - std::shared_ptr<dht::DhtRunner> dht, const std::string& nameServer) : path_(path) , onAsync_(std::move(onAsync)) - , dht_(std::move(dht)) , nameDir_(NameDirectory::instance(nameServer)) {}; virtual ~AccountManager() = default; @@ -128,6 +126,8 @@ public: const std::vector<uint8_t>& receiptSignature, OnChangeCallback&& onChange); + void setDht(const std::shared_ptr<dht::DhtRunner>& dht) { dht_ = dht; } + virtual void startSync() {}; const AccountInfo* getInfo() const { diff --git a/src/jamidht/archive_account_manager.h b/src/jamidht/archive_account_manager.h index f3652053e7bd32d4da18301e1da724a898ff1da1..c6c103f4a3ab46ed6d94f394e6308e09d67a8368 100644 --- a/src/jamidht/archive_account_manager.h +++ b/src/jamidht/archive_account_manager.h @@ -27,12 +27,11 @@ public: ArchiveAccountManager( const std::string& path, - std::shared_ptr<dht::DhtRunner> dht, OnAsync&& onAsync, OnExportConfig&& onExportConfig, std::string archivePath, const std::string& nameServer) - : AccountManager(path, std::move(onAsync), std::move(dht), nameServer) + : AccountManager(path, std::move(onAsync), nameServer) , onExportConfig_(std::move(onExportConfig)) , archivePath_(std::move(archivePath)) {}; diff --git a/src/jamidht/jamiaccount.cpp b/src/jamidht/jamiaccount.cpp index 1560cf5a37820f5c318257c4027c7ad6e5a33f73..aaffbf2c669ffceb971ed2e81e5cd6d8a5a268ef 100644 --- a/src/jamidht/jamiaccount.cpp +++ b/src/jamidht/jamiaccount.cpp @@ -892,14 +892,12 @@ JamiAccount::loadAccount(const std::string& archive_password, const std::string& }; if (managerUri_.empty()) { accountManager_.reset(new ArchiveAccountManager(getPath(), - dht_, onAsync, [this]() { return getAccountDetails(); }, archivePath_.empty() ? "archive.gz" : archivePath_, nameServer_)); } else { accountManager_.reset(new ServerAccountManager(getPath(), - dht_, onAsync, managerUri_, nameServer_)); @@ -997,31 +995,6 @@ JamiAccount::loadAccount(const std::string& archive_password, const std::string& receiptSignature_ = std::move(receipt_signature); accountManager_->foundAccountDevice(info.identity.second, ringDeviceName_, clock::now()); setRegistrationState(RegistrationState::UNREGISTERED); - - AccountManager::OnChangeCallback callbacks { - [this](const std::string& uri, bool confirmed) { - dht::ThreadPool::computation().run([this, uri, confirmed] { - emitSignal<DRing::ConfigurationSignal::ContactAdded>(getAccountID(), uri, confirmed); - }); - }, - [this](const std::string& uri, bool banned) { - dht::ThreadPool::computation().run([this, uri, banned] { - emitSignal<DRing::ConfigurationSignal::ContactRemoved>(getAccountID(), uri, banned); - }); - }, - [this](const std::string& uri, const std::vector<uint8_t>& payload, time_t received) { - dht::ThreadPool::computation().run([this, uri, payload = std::move(payload), received] { - emitSignal<DRing::ConfigurationSignal::IncomingTrustRequest>(getAccountID(), uri, payload, received); - }); - }, - [this]() { - dht::ThreadPool::computation().run([this] { - emitSignal<DRing::ConfigurationSignal::KnownDevicesChanged>(getAccountID(), getKnownDevices()); - }); - }, - }; - accountManager_->useIdentity(id_, receipt_, receiptSignature_, std::move(callbacks)); - saveConfig(); doRegister(); }, [this](AccountManager::AuthError error, const std::string& message) @@ -1353,7 +1326,7 @@ JamiAccount::handlePendingCall(PendingCall& pc, bool incoming) // Securize a SIP transport with TLS (on top of ICE tranport) and assign the call with it auto remote_device = pc.from; auto remote_account = pc.from_account; - auto id = accountManager_->getInfo()->identity; + auto id = id_; if (not id.first or not id.second) throw std::runtime_error("No identity configured for this account."); @@ -1659,7 +1632,7 @@ JamiAccount::doRegister_() config.dht_config.node_config.network = 0; config.dht_config.node_config.maintain_storage = false; config.dht_config.node_config.persist_path = cachePath_+DIR_SEPARATOR_STR "dhtstate"; - config.dht_config.id = accountManager_->getInfo()->identity; + config.dht_config.id = id_; config.proxy_server = getDhtProxyServer(); config.push_node_id = getAccountID(); config.threaded = true; @@ -1758,6 +1731,7 @@ JamiAccount::doRegister_() for (const auto& bootstrap : loadBootstrap()) dht_->bootstrap(bootstrap); + accountManager_->setDht(dht_); accountManager_->startSync(); // Listen for incoming calls @@ -2257,7 +2231,7 @@ JamiAccount::getContactHeader(pjsip_transport* t) contact_.slen = pj_ansi_snprintf(contact_.ptr, PJSIP_MAX_URL_SIZE, "%s<sips:%s%s%s;transport=dtls>", quotedDisplayName.c_str(), - accountManager_->getInfo()->identity.second->getId().toString().c_str(), + id_.second->getId().toString().c_str(), (address.empty() ? "" : "@"), address.c_str()); } else { @@ -2265,7 +2239,7 @@ JamiAccount::getContactHeader(pjsip_transport* t) contact_.slen = pj_ansi_snprintf(contact_.ptr, PJSIP_MAX_URL_SIZE, "%s<sips:%s@ring.dht>", quotedDisplayName.c_str(), - accountManager_->getInfo()->identity.second->getId().toString().c_str()); + id_.second->getId().toString().c_str()); } return contact_; } diff --git a/src/jamidht/server_account_manager.cpp b/src/jamidht/server_account_manager.cpp index cd3d00926b8c18e8161dce6810824f7cf0430abc..8b530f7a3269c6340f5969b8d70311fc1d61d789 100644 --- a/src/jamidht/server_account_manager.cpp +++ b/src/jamidht/server_account_manager.cpp @@ -38,11 +38,10 @@ constexpr const char* const HTTPS_PROTO {"https"}; ServerAccountManager::ServerAccountManager( const std::string& path, - std::shared_ptr<dht::DhtRunner> dht, OnAsync&& onAsync, const std::string& managerHostname, const std::string& nameServer) -: AccountManager(path, std::move(onAsync), std::move(dht), nameServer) +: AccountManager(path, std::move(onAsync), nameServer) , managerHostname_(managerHostname) , logger_(std::make_shared<dht::Logger>( [](char const* m, va_list args) { Logger::vlog(LOG_ERR, nullptr, 0, true, m, args); }, diff --git a/src/jamidht/server_account_manager.h b/src/jamidht/server_account_manager.h index 09531ceaba4727f42f18c419de03f11f983a0cb6..b06fdee80fdb2a4f0544f768573f68c10ab3cd8d 100644 --- a/src/jamidht/server_account_manager.h +++ b/src/jamidht/server_account_manager.h @@ -25,7 +25,6 @@ class ServerAccountManager : public AccountManager { public: ServerAccountManager( const std::string& path, - std::shared_ptr<dht::DhtRunner> dht, OnAsync&& onAsync, const std::string& managerHostname, const std::string& nameServer);