From 1c2d816867fea8c8b3e2df301ce295b57d385b86 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adrien=20B=C3=A9raud?= <adrien.beraud@savoirfairelinux.com> Date: Thu, 25 Jul 2019 15:46:07 -0400 Subject: [PATCH] dring: don't use IDs above 2^53 * avoid using IDs above 2^63 for Java binding compatibility (no unsigned integers in Java) * avoid using IDs above 2^53 for JavaScript binding compatibility (no proper integers in JS) Change-Id: I57bb26d2464edbdca4c9e6fe858894d3b53519dd --- src/im/message_engine.cpp | 4 +--- src/manager.cpp | 3 +-- src/manager.h | 2 ++ 3 files changed, 4 insertions(+), 5 deletions(-) diff --git a/src/im/message_engine.cpp b/src/im/message_engine.cpp index e0b238a2f1..c13ac59602 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 fee8646af7..134983f2f9 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 cb9b7211dc..9d0a9b3d44 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: -- GitLab