From 7771a1cb9b394b8585b4c9074ab67a3c89fc8183 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Adrien=20B=C3=A9raud?= <adrien.beraud@savoirfairelinux.com>
Date: Mon, 23 Mar 2015 10:53:26 -0400
Subject: [PATCH] manager: avoid using disabled account to place DHT calls

Refs #69037

Change-Id: I028a0e808f3a8c75cc8c6a9727717d9b9b15eb84
---
 src/managerimpl.cpp | 13 ++++++++-----
 1 file changed, 8 insertions(+), 5 deletions(-)

diff --git a/src/managerimpl.cpp b/src/managerimpl.cpp
index 491501e1af..ff1b97b996 100644
--- a/src/managerimpl.cpp
+++ b/src/managerimpl.cpp
@@ -2825,15 +2825,18 @@ std::shared_ptr<Call>
 ManagerImpl::newOutgoingCall(const std::string& toUrl,
                              const std::string& preferredAccountId)
 {
-    std::shared_ptr<Account> account = Manager::instance().getIP2IPAccount();
+    auto account = Manager::instance().getIP2IPAccount();
+    auto preferred = getAccount(preferredAccountId);
     std::string finalToUrl = toUrl;
 
 #if HAVE_DHT
     if (toUrl.find("ring:") != std::string::npos) {
-        RING_WARN("Ring DHT call detected");
+        if (preferred && preferred->getAccountType() == RingAccount::ACCOUNT_TYPE)
+            return preferred->newOutgoingCall(finalToUrl);
         auto dhtAcc = getAllAccounts<RingAccount>();
-        if (not dhtAcc.empty())
-            return dhtAcc.front()->newOutgoingCall(finalToUrl);
+        for (const auto& acc : dhtAcc)
+            if (acc->isEnabled())
+                return acc->newOutgoingCall(finalToUrl);
     }
 #endif
 
@@ -2841,7 +2844,7 @@ ManagerImpl::newOutgoingCall(const std::string& toUrl,
     sip_utils::stripSipUriPrefix(finalToUrl);
 
     if (!IpAddr::isValid(finalToUrl)) {
-        account = getAccount(preferredAccountId);
+        account = preferred;
         if (account)
             finalToUrl = toUrl;
         else
-- 
GitLab