From 43947bee19cc38ef36701a12152b3b81cb063c71 Mon Sep 17 00:00:00 2001 From: Ronan Abhamon Date: Mon, 30 Oct 2017 09:35:49 +0100 Subject: [PATCH] fix(Core): more robust deleteChatRoom impl --- src/core/core-chat-room.cpp | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/src/core/core-chat-room.cpp b/src/core/core-chat-room.cpp index b39c8703b..fd3b50175 100644 --- a/src/core/core-chat-room.cpp +++ b/src/core/core-chat-room.cpp @@ -79,8 +79,28 @@ void CorePrivate::deleteChatRoom (const string &peerAddress) { auto it = find_if(chatRooms.begin(), chatRooms.end(), [&peerAddress](const shared_ptr &chatRoom) { return peerAddress == chatRoom->getPeerAddress().asStringUriOnly(); }); - if (it == chatRooms.end()) return; - chatRooms.erase(it); + if (it != chatRooms.end()) { + chatRooms.erase(it); + return; + } + + // TODO: Remove me, temp workaround. + string workaroundAddress; + { + Address address(peerAddress); + address.setDomain(Address(linphone_core_get_conference_factory_uri(cCore)).getDomain()); + workaroundAddress = address.asStringUriOnly(); + } + + lWarning() << "We don't find the chat room with address " << peerAddress << + " as a temporary workaround, searching with " << workaroundAddress; + it = find_if(chatRooms.begin(), chatRooms.end(), [&workaroundAddress](const shared_ptr &chatRoom) { + return workaroundAddress == chatRoom->getPeerAddress().asStringUriOnly(); + }); + if (it != chatRooms.end()) + chatRooms.erase(it); + else + lError() << "Unable to remove chat room: " << peerAddress; } }