1 files changed, 24 insertions, 0 deletions
diff --git a/src/Cache.cpp b/src/Cache.cpp
index b7a25343..63f6e426 100644
--- a/src/Cache.cpp
+++ b/src/Cache.cpp
@@ -373,6 +373,25 @@ Cache::updateOutboundMegolmSession(const std::string &room_id, int message_index
}
void
+Cache::dropOutboundMegolmSession(const std::string &room_id)
+{
+ using namespace mtx::crypto;
+
+ if (!outboundMegolmSessionExists(room_id))
+ return;
+
+ {
+ std::unique_lock<std::mutex> lock(session_storage.group_outbound_mtx);
+ session_storage.group_outbound_session_data.erase(room_id);
+ session_storage.group_outbound_sessions.erase(room_id);
+
+ auto txn = lmdb::txn::begin(env_);
+ lmdb::dbi_del(txn, outboundMegolmSessionDb_, lmdb::val(room_id), nullptr);
+ txn.commit();
+ }
+}
+
+void
Cache::saveOutboundMegolmSession(const std::string &room_id,
const OutboundGroupSessionData &data,
mtx::crypto::OutboundGroupSessionPtr session)
@@ -3889,6 +3908,11 @@ updateOutboundMegolmSession(const std::string &room_id, int message_index)
{
instance_->updateOutboundMegolmSession(room_id, message_index);
}
+void
+dropOutboundMegolmSession(const std::string &room_id)
+{
+ instance_->dropOutboundMegolmSession(room_id);
+}
void
importSessionKeys(const mtx::crypto::ExportedSessionKeys &keys)
|