From ff6acce6cafa321cf6b80a95b57d2e4e27aa7cd6 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Adrien=20B=C3=A9raud?= <adrien.beraud@savoirfairelinux.com>
Date: Sat, 9 Oct 2021 18:58:55 -0400
Subject: [PATCH] jamiaccount: don't fail call if no DHT device but connection
 exists

Change-Id: I53308fca61c46551129320babc99915d927a81dd
---
 src/jamidht/jamiaccount.cpp | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/src/jamidht/jamiaccount.cpp b/src/jamidht/jamiaccount.cpp
index 1895e02a92..ae7f158405 100644
--- a/src/jamidht/jamiaccount.cpp
+++ b/src/jamidht/jamiaccount.cpp
@@ -610,7 +610,7 @@ JamiAccount::startOutgoingCall(const std::shared_ptr<SIPCall>& call, const std::
             dev_call->setIceMedia(call->getIceMedia());
             {
                 std::lock_guard<std::mutex> lk(pendingCallsMutex_);
-                pendingCalls_[deviceId].emplace_back(dev_call);
+                pendingCalls_[deviceId].emplace_back(std::move(dev_call));
             }
 
             JAMI_WARN("[call %s] No channeled socket with this peer. Send request",
@@ -707,7 +707,9 @@ JamiAccount::startOutgoingCall(const std::shared_ptr<SIPCall>& call, const std::
             if (not ok) {
                 if (auto call = wCall.lock()) {
                     JAMI_WARN("[call:%s] no devices found", call->getCallId().c_str());
-                    call->onFailure(static_cast<int>(std::errc::no_such_device_or_address));
+                    // Note: if a p2p connection exists, the call will be at least in CONNECTING
+                    if (call->getConnectionState() == Call::ConnectionState::TRYING)
+                        call->onFailure(static_cast<int>(std::errc::no_such_device_or_address));
                 }
             }
         });
-- 
GitLab