diff --git a/message_cache.cc b/message_cache.cc index d14edf1..0122040 100644 --- a/message_cache.cc +++ b/message_cache.cc @@ -81,13 +81,20 @@ namespace pEp { } PEP_STATUS MessageCache::cache_release(const char *id) + { + message_cache.release(id); + return PEP_STATUS_OK; + } + + void MessageCache::release(std::string id) { try { std::lock_guard l(message_cache._mtx); - message_cache._cache.erase(std::string(id)); + ::free_message(_cache.at(id).src); + ::free_message(_cache.at(id).dst); + _cache.erase(id); } catch (...) { } - return PEP_STATUS_OK; } static char *dup(const char *src) @@ -348,12 +355,7 @@ namespace pEp { has_pEp_msg_attachment); ::free_message(_msg); - { - std::lock_guard l(_mtx); - ::free_message(_cache.at(msg->id).src); - ::free_message(_cache.at(msg->id).dst); - _cache.erase(msg->id); - } + cache_release(msg->id); return status; } diff --git a/message_cache.hh b/message_cache.hh index 0940fb7..7901b6e 100644 --- a/message_cache.hh +++ b/message_cache.hh @@ -75,6 +75,8 @@ namespace pEp { static PEP_STATUS cache_release(const char *id); protected: + void release(std::string id); + PEP_STATUS mime_decode_message( const char *mimetext, size_t size,