Browse Source

LIB-15 - "Need cache_decrypt_message() to pass back longmsg/longmsg_formatted"

Release_2.1
heck 4 years ago
parent
commit
08a09d41e6
  1. 36
      src/message_cache.cc

36
src/message_cache.cc

@ -196,7 +196,7 @@ namespace pEp {
return false; return false;
} }
static ::message *empty_message_copy(const ::message *src, std::string _id = "") static ::message *empty_message_copy(const ::message *src, std::string _id = "", bool get_longmsg = false)
{ {
if (!src) if (!src)
return nullptr; return nullptr;
@ -207,12 +207,32 @@ namespace pEp {
dst->id = dup(src->id); dst->id = dup(src->id);
if (!emptystr(src->shortmsg)) if (get_longmsg) {
dst->shortmsg = dup(src->shortmsg); if (!emptystr(src->shortmsg)) {
else if (!emptystr(src->longmsg)) dst->shortmsg = dup(src->shortmsg);
dst->longmsg = dup("pEp"); }
else if (!emptystr(src->longmsg_formatted)) // We need either longmsg or longmsg_formatted for a "message preview".
dst->longmsg_formatted = dup("<pEp/>"); if (!emptystr(src->longmsg)) {
dst->longmsg = dup(src->longmsg);
} else {
if (!emptystr(src->longmsg_formatted)) {
dst->longmsg_formatted = dup(src->longmsg_formatted);
}
}
} else {
// It is a pEp convention to return at least one of shortmsg, longmsg or longmsg_formatted.
if (!emptystr(src->shortmsg)) {
dst->shortmsg = dup(src->shortmsg);
} else {
if (!emptystr(src->longmsg)) {
dst->longmsg = dup("pEp");
} else {
if (!emptystr(src->longmsg_formatted)) {
dst->longmsg_formatted = dup("<pEp/>");
}
}
}
}
// attachments are never copied // attachments are never copied
@ -313,7 +333,7 @@ namespace pEp {
::message *_dst = nullptr; ::message *_dst = nullptr;
PEP_STATUS status = ::decrypt_message(session, src, &_dst, keylist, rating, flags); PEP_STATUS status = ::decrypt_message(session, src, &_dst, keylist, rating, flags);
*dst = empty_message_copy(_dst, _id); *dst = empty_message_copy(_dst, _id, true);
{ {
std::lock_guard<std::mutex> l(_mtx); std::lock_guard<std::mutex> l(_mtx);

Loading…
Cancel
Save