From 0f49be34ffbee02b547825816be6e97aca0a58fd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Blin?= <sebastien.blin@savoirfairelinux.com> Date: Thu, 20 May 2021 10:18:49 -0400 Subject: [PATCH] jamiaccount: compat: be able to add a contact if the trust request is not found Change-Id: Ic336fd64f666debf3e1183fb705af65f82a4bdb7 --- src/jamidht/account_manager.cpp | 11 +++++++---- src/jamidht/account_manager.h | 2 +- src/jamidht/jamiaccount.cpp | 10 ++++++++-- 3 files changed, 16 insertions(+), 7 deletions(-) diff --git a/src/jamidht/account_manager.cpp b/src/jamidht/account_manager.cpp index 04cde3e5ce..3a4b8bddbf 100644 --- a/src/jamidht/account_manager.cpp +++ b/src/jamidht/account_manager.cpp @@ -377,22 +377,24 @@ AccountManager::onPeerCertificate(const std::shared_ptr<dht::crypto::Certificate return true; } -void +bool AccountManager::addContact(const std::string& uri, bool confirmed, const std::string& conversationId) { JAMI_WARN("AccountManager::addContact %d", confirmed); dht::InfoHash h(uri); if (not h) { JAMI_ERR("addContact: invalid contact URI"); - return; + return false; } if (not info_) { JAMI_ERR("addContact(): account not loaded"); - return; + return false; } if (info_->contacts->addContact(h, confirmed, conversationId)) { syncDevices(); + return true; } + return false; } void @@ -609,8 +611,9 @@ AccountManager::acceptTrustRequest(const std::string& from, bool includeConversa ? req[DRing::Account::TrustRequest::CONVERSATIONID] : ""); syncDevices(); + return true; } - return true; + return false; } return false; } diff --git a/src/jamidht/account_manager.h b/src/jamidht/account_manager.h index a1c6045d2b..ffdccb1515 100644 --- a/src/jamidht/account_manager.h +++ b/src/jamidht/account_manager.h @@ -212,7 +212,7 @@ public: * Add contact to the account contact list. * Set confirmed if we know the contact also added us. */ - void addContact(const std::string& uri, + bool addContact(const std::string& uri, bool confirmed = false, const std::string& conversationId = ""); void removeContact(const std::string& uri, bool banned = true); diff --git a/src/jamidht/jamiaccount.cpp b/src/jamidht/jamiaccount.cpp index edea76f3d7..81e715eebe 100644 --- a/src/jamidht/jamiaccount.cpp +++ b/src/jamidht/jamiaccount.cpp @@ -3157,8 +3157,14 @@ bool JamiAccount::acceptTrustRequest(const std::string& from, bool includeConversation) { std::lock_guard<std::mutex> lock(configurationMutex_); - if (accountManager_) - return accountManager_->acceptTrustRequest(from, includeConversation); + if (accountManager_) { + if (!accountManager_->acceptTrustRequest(from, includeConversation)) { + // Note: unused for swarm + // Typically the case where the trust request doesn't exists, only incoming DHT messages + return accountManager_->addContact(from, true); + } + return true; + } JAMI_WARN("[Account %s] acceptTrustRequest: account not loaded", getAccountID().c_str()); return false; } -- GitLab