From cb5b3bd29dc15c70539c6c268048a87f2e21d3ab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Blin?= <sebastien.blin@savoirfairelinux.com> Date: Mon, 14 Jun 2021 15:58:12 -0400 Subject: [PATCH] jamiaccount: do not crash on a failing mode() Change-Id: I69bf2a2b2a8c7fed6d38c1b85ab9d8069442b4d1 --- src/jamidht/jamiaccount.cpp | 28 ++++++++++++++++++---------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/src/jamidht/jamiaccount.cpp b/src/jamidht/jamiaccount.cpp index 2578313769..0b19db416e 100644 --- a/src/jamidht/jamiaccount.cpp +++ b/src/jamidht/jamiaccount.cpp @@ -5142,11 +5142,15 @@ JamiAccount::removeRepository(const std::string& conversationId, bool sync, bool std::unique_lock<std::mutex> lk(conversationsMtx_); auto it = conversations_.find(conversationId); if (it != conversations_.end() && it->second && (force || it->second->isRemoving())) { - if (it->second->mode() == ConversationMode::ONE_TO_ONE) { - for (const auto& member : it->second->getInitialMembers()) { - if (member != getUsername()) - accountManager_->removeContactConversation(member); + try { + if (it->second->mode() == ConversationMode::ONE_TO_ONE) { + for (const auto& member : it->second->getInitialMembers()) { + if (member != getUsername()) + accountManager_->removeContactConversation(member); + } } + } catch (const std::exception& e) { + JAMI_ERR() << e.what(); } JAMI_DBG() << "Remove conversation: " << conversationId; it->second->erase(); @@ -5206,12 +5210,16 @@ JamiAccount::getOneToOneConversation(const std::string& uri) const // removing self can remove all conversations if (!conv) continue; - if (conv->mode() == ConversationMode::ONE_TO_ONE) { - auto initMembers = conv->getInitialMembers(); - if (isSelf && initMembers.size() == 1) - return key; - if (std::find(initMembers.begin(), initMembers.end(), uri) != initMembers.end()) - return key; + try { + if (conv->mode() == ConversationMode::ONE_TO_ONE) { + auto initMembers = conv->getInitialMembers(); + if (isSelf && initMembers.size() == 1) + return key; + if (std::find(initMembers.begin(), initMembers.end(), uri) != initMembers.end()) + return key; + } + } catch (const std::exception& e) { + JAMI_ERR() << e.what(); } } return {}; -- GitLab