diff --git a/src/account.cpp b/src/account.cpp index d64a6e4e865cd8f7dd227ec8bee846d2a2351e41..5ed2b5c8197bd8be660b0832d7305af6f7920bbe 100644 --- a/src/account.cpp +++ b/src/account.cpp @@ -106,8 +106,15 @@ Account::Account(const std::string &accountID) , mailBox_() , upnp_(new upnp::Controller()) { +#ifndef _WIN32 std::random_device rdev; std::seed_seq seed {rdev(), rdev()}; +#else + int seed_data[std::mt19937::state_size]; + std::default_random_engine dre(std::chrono::system_clock::now().time_since_epoch().count()); + std::generate_n(seed_data, std::mt19937::state_size, std::ref(dre)); + std::seed_seq seed(std::begin(seed_data), std::end(seed_data)); +#endif rand_.seed(seed); // Initialize the codec order, used when creating a new account diff --git a/src/manager.cpp b/src/manager.cpp index 335c94d34a5d244087d275a1d77694649b8f11cb..43fba280664136a35415a2ee86f1f51f7b9b6f73 100644 --- a/src/manager.cpp +++ b/src/manager.cpp @@ -225,8 +225,15 @@ Manager::Manager() : { // initialize random generator // mt19937_64 should be seeded with 2 x 32 bits +#ifndef _WIN32 std::random_device rdev; std::seed_seq seed {rdev(), rdev()}; +#else + int seed_data[std::mt19937::state_size]; + std::default_random_engine dre(std::chrono::system_clock::now().time_since_epoch().count()); + std::generate_n(seed_data, std::mt19937::state_size, std::ref(dre)); + std::seed_seq seed(std::begin(seed_data), std::end(seed_data)); +#endif rand_.seed(seed); ring::libav_utils::ring_avcodec_init(); diff --git a/src/sip/sdp.cpp b/src/sip/sdp.cpp index 2075e74ab7f4b772051dda821a19e04ecf104fbf..7727d642d8cdeae08c804eadf1dc7d131fd3dbb8 100644 --- a/src/sip/sdp.cpp +++ b/src/sip/sdp.cpp @@ -132,7 +132,11 @@ static void randomFill(std::vector<uint8_t>& dest) { std::uniform_int_distribution<uint8_t> rand_byte(0, 255); +#ifndef _WIN32 std::random_device rdev; +#else + std::default_random_engine rdev(std::chrono::system_clock::now().time_since_epoch().count()); +#endif std::generate(dest.begin(), dest.end(), std::bind(rand_byte, std::ref(rdev))); }