diff --git a/src/jamidht/account_manager.cpp b/src/jamidht/account_manager.cpp index 04cde3e5ce0980dbaab4a468cb84a0b4daa2fde6..3a4b8bddbf93ffb959bbb6f3e24b2e3de7047ae1 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 a1c6045d2bf57544f0a8305d5811299bfd60ede7..ffdccb151568da2130217ed40f9292303d80abda 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 edea76f3d79f6981a17c8e4e01d60ee76650df84..81e715eebe4a5301d5b10ba025186acc3ba52ccf 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; }