From 946f2f0ebef52305b0f3f61ef48c7dd5d144580f Mon Sep 17 00:00:00 2001 From: Volker Birk Date: Wed, 29 Jul 2020 18:09:45 +0200 Subject: [PATCH] make Message-ID random --- message_cache.cc | 20 ++++++++++++++++++++ message_cache.hh | 3 +++ test/test_message_cache.cc | 1 - 3 files changed, 23 insertions(+), 1 deletion(-) diff --git a/message_cache.cc b/message_cache.cc index ae13058..71ce28f 100644 --- a/message_cache.cc +++ b/message_cache.cc @@ -1,10 +1,19 @@ #include "message_cache.hh" #include #include +#include pEp::MessageCache pEp::message_cache; namespace pEp { + MessageCache::MessageCache() + { + std::random_device r; + std::default_random_engine e(r()); + std::uniform_int_distribution u(1, 0x0100000000000000L); + next_id = u(e); + } + PEP_STATUS MessageCache::cache_decrypt_message( PEP_SESSION session, message *src, @@ -361,6 +370,17 @@ namespace pEp { if (status) return status; + // guarantee we have a Message-ID + + if (_msg && emptystr(_msg->id)) { + free(_msg->id); + std::string _id = std::to_string(next_id++); + _msg->id = strdup((std::string("pEp_auto_id_") + _id).c_str()); + assert(_msg->id); + if (!_msg->id) + throw std::bad_alloc(); + } + *msg = empty_message_copy(_msg); { diff --git a/message_cache.hh b/message_cache.hh index e463391..fec9b63 100644 --- a/message_cache.hh +++ b/message_cache.hh @@ -20,8 +20,11 @@ namespace pEp { cache _cache; std::mutex _mtx; + long long next_id = 23; public: + MessageCache(); + enum which { msg_src = 0, msg_dst = 1 }; static PEP_STATUS cache_mime_decode_message( diff --git a/test/test_message_cache.cc b/test/test_message_cache.cc index 2346903..8ca7685 100644 --- a/test/test_message_cache.cc +++ b/test/test_message_cache.cc @@ -17,7 +17,6 @@ int main() char *mime = strdup("From: Alice \n" "To: Bob \n" "Subject: short message\n" - "Message-ID: <42>\n" "\n" "long message\n");