diff --git a/src/im/message_engine.cpp b/src/im/message_engine.cpp index e0b238a2f10de5bfa0570c7536827e384735a75b..c13ac59602074d9f5aed69394a8ef3ecd99759d6 100644 --- a/src/im/message_engine.cpp +++ b/src/im/message_engine.cpp @@ -33,8 +33,6 @@ namespace jami { namespace im { -static std::uniform_int_distribution<MessageToken> udist {1}; - MessageEngine::MessageEngine(SIPAccountBase& acc, const std::string& path) : account_(acc), savePath_(path) {} @@ -48,7 +46,7 @@ MessageEngine::sendMessage(const std::string& to, const std::map<std::string, st std::lock_guard<std::mutex> lock(messagesMutex_); auto& peerMessages = messages_[to]; do { - token = udist(account_.rand); + token = std::uniform_int_distribution<MessageToken>{1, DRING_ID_MAX_VAL}(account_.rand); } while (peerMessages.find(token) != peerMessages.end()); auto m = peerMessages.emplace(token, Message{}); m.first->second.to = to; diff --git a/src/manager.cpp b/src/manager.cpp index fee8646af7181fdf60700787af58fd6302ccce94..134983f2f9344a9c3c439f1535fb460240f727e8 100644 --- a/src/manager.cpp +++ b/src/manager.cpp @@ -2790,13 +2790,12 @@ Manager::removeAccounts() std::string Manager::getNewCallID() { - static std::uniform_int_distribution<uint64_t> rand_call_id; std::ostringstream random_id; // generate something like s7ea037947eb9fb2f do { random_id.clear(); - random_id << rand_call_id(pimpl_->rand_); + random_id << std::uniform_int_distribution<uint64_t>(1, DRING_ID_MAX_VAL)(pimpl_->rand_); } while (callFactory.hasCall(random_id.str())); return random_id.str(); diff --git a/src/manager.h b/src/manager.h index cb9b7211dc33407c2a85e62025bc1f24c1316501..9d0a9b3d44d448ae5753c00bcce0abb39a6cc38a 100644 --- a/src/manager.h +++ b/src/manager.h @@ -57,6 +57,8 @@ class IceTransportFactory; class DataTransferFacade; class JamiAccount; +static constexpr size_t DRING_ID_MAX_VAL = 9007199254740992; + /** Manager (controller) of daemon */ class Manager { public: