diff --git a/include/connectionmanager.h b/include/connectionmanager.h index 5a97280abb6c09954e683c8c9c3bde61a99fcb06..086981f6825487729a44d03c46e546d375cff1a4 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 87704a8d702dae42e953ddf4e686c00ab1f45249..2e0e99b451453e5a931f703c4c0ced018c6c7975 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) {