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;
 }