From d8b6a405b9f2ae87cbbfd7ebc8e91aaec019530c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Adrien=20B=C3=A9raud?= <adrien.beraud@savoirfairelinux.com>
Date: Fri, 8 Dec 2023 14:19:25 -0500
Subject: [PATCH] ConnectionManager: allow to provide RNG through configuration

Change-Id: Ic24123e329b221f5f1e24d3df6f3cc93649c4591
---
 include/connectionmanager.h | 2 ++
 src/connectionmanager.cpp   | 2 +-
 2 files changed, 3 insertions(+), 1 deletion(-)

diff --git a/include/connectionmanager.h b/include/connectionmanager.h
index 5a97280..086981f 100644
--- a/include/connectionmanager.h
+++ b/include/connectionmanager.h
@@ -321,6 +321,8 @@ struct ConnectionManager::Config
      */
     bool getUPnPActive() const;
 
+    /** Optional pseudo random generator to be used, allowing to control the seed. */
+    std::unique_ptr<std::mt19937_64> rng;
 };
 
 } // namespace dhtnet
\ No newline at end of file
diff --git a/src/connectionmanager.cpp b/src/connectionmanager.cpp
index 87704a8..2e0e99b 100644
--- a/src/connectionmanager.cpp
+++ b/src/connectionmanager.cpp
@@ -381,7 +381,7 @@ class ConnectionManager::Impl : public std::enable_shared_from_this<ConnectionMa
 public:
     explicit Impl(std::shared_ptr<ConnectionManager::Config> config_)
         : config_ {std::move(createConfig(config_))}
-        , rand_ {dht::crypto::getSeededRandomEngine<std::mt19937_64>()}
+        , rand_ {config_->rng ? *config_->rng : dht::crypto::getSeededRandomEngine<std::mt19937_64>()}
     {
         loadTreatedMessages();
         if(!config_->ioContext) {
-- 
GitLab