Browse Source

Backed out changeset 68c2124f583a

This leads to double free because of unordered_map
ENGINE-781
Volker Birk 5 years ago
parent
commit
b6586e520f
  1. 12
      message_cache.cc
  2. 4
      message_cache.hh

12
message_cache.cc

@ -16,16 +16,6 @@ namespace pEp {
next_id = u(e); next_id = u(e);
} }
MessageCache::cache_entry::cache_entry(::message *s, ::message *d)
: src(s), dst(d)
{ }
MessageCache::cache_entry::~cache_entry()
{
::free_message(src);
::free_message(dst);
}
PEP_STATUS MessageCache::cache_decrypt_message( PEP_STATUS MessageCache::cache_decrypt_message(
PEP_SESSION session, PEP_SESSION session,
message *src, message *src,
@ -360,6 +350,8 @@ namespace pEp {
{ {
std::lock_guard<std::mutex> l(_mtx); std::lock_guard<std::mutex> l(_mtx);
::free_message(_cache.at(msg->id).src);
::free_message(_cache.at(msg->id).dst);
_cache.erase(msg->id); _cache.erase(msg->id);
} }

4
message_cache.hh

@ -9,8 +9,8 @@
namespace pEp { namespace pEp {
class MessageCache { class MessageCache {
struct cache_entry { struct cache_entry {
cache_entry(::message *s, ::message *d); cache_entry(::message *s, ::message *d)
~cache_entry(); : src(s), dst(d) { }
::message *src; ::message *src;
::message *dst; ::message *dst;

Loading…
Cancel
Save