From e87d22c3b8dd7d7b423c6a54318fbf92917c6eaa Mon Sep 17 00:00:00 2001 From: Volker Birk Date: Wed, 29 Jul 2020 01:58:04 +0200 Subject: [PATCH] locking --- message_cache.cc | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/message_cache.cc b/message_cache.cc index 32cf8d4..ff00178 100644 --- a/message_cache.cc +++ b/message_cache.cc @@ -58,6 +58,7 @@ namespace pEp { PEP_STATUS MessageCache::cache_release(const char *id) { try { + std::lock_guard l(message_cache._mtx); message_cache._cache.erase(std::string(id)); } catch (...) { } @@ -320,8 +321,11 @@ namespace pEp { *msg = empty_message_copy(_msg); - message_cache._cache.emplace(std::make_pair(std::string(_msg->id), - cache_entry(_msg, nullptr))); + { + std::lock_guard l(_mtx); + message_cache._cache.emplace(std::make_pair(std::string(_msg->id), + cache_entry(_msg, nullptr))); + } return status; } @@ -335,7 +339,11 @@ namespace pEp { PEP_encrypt_flags_t flags ) { - ::message *_msg = message_cache._cache.at(src->id).src; + ::message *_msg; + { + std::lock_guard l(_mtx); + _msg = message_cache._cache.at(src->id).src; + } free(src->longmsg); src->longmsg = _msg->longmsg; @@ -363,8 +371,12 @@ namespace pEp { src->attachments = nullptr; *dst = empty_message_copy(_dst); - ::free_message(message_cache._cache.at(src->id).dst); - message_cache._cache.at(src->id).dst = _dst; + + { + std::lock_guard l(_mtx); + ::free_message(message_cache._cache.at(src->id).dst); + message_cache._cache.at(src->id).dst = _dst; + } return status; }