From 08a09d41e6d86960dae304f96f88a236f73151e4 Mon Sep 17 00:00:00 2001 From: heck Date: Fri, 9 Apr 2021 13:51:31 +0200 Subject: [PATCH] LIB-15 - "Need cache_decrypt_message() to pass back longmsg/longmsg_formatted" --- src/message_cache.cc | 36 ++++++++++++++++++++++++++++-------- 1 file changed, 28 insertions(+), 8 deletions(-) diff --git a/src/message_cache.cc b/src/message_cache.cc index b8cfaf3..e83bad3 100644 --- a/src/message_cache.cc +++ b/src/message_cache.cc @@ -196,7 +196,7 @@ namespace pEp { 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) return nullptr; @@ -207,12 +207,32 @@ namespace pEp { dst->id = dup(src->id); - 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(""); + if (get_longmsg) { + if (!emptystr(src->shortmsg)) { + dst->shortmsg = dup(src->shortmsg); + } + // We need either longmsg or longmsg_formatted for a "message preview". + 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(""); + } + } + } + } // attachments are never copied @@ -313,7 +333,7 @@ namespace pEp { ::message *_dst = nullptr; 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 l(_mtx);