mirror of
https://github.com/Ylianst/MeshCentral.git
synced 2025-02-12 11:01:52 +00:00
Fixed random bias.
This commit is contained in:
parent
f7300b8b5b
commit
956fdd8ca8
2 changed files with 10 additions and 3 deletions
10
common.js
10
common.js
|
@ -95,8 +95,14 @@ module.exports.data2blob = function (data) {
|
||||||
return blob;
|
return blob;
|
||||||
};
|
};
|
||||||
|
|
||||||
// Generate random numbers
|
// Generate random numbers between 0 and max without bias.
|
||||||
module.exports.random = function (max) { (require('crypto').randomBytes(4).readUInt32BE(0) % max); };
|
module.exports.random = function (max) {
|
||||||
|
const crypto = require('crypto');
|
||||||
|
var maxmask = 1, r;
|
||||||
|
while (maxmask < max) { maxmask = (maxmask << 1) + 1; }
|
||||||
|
do { r = (crypto.randomBytes(4).readUInt32BE(0) & maxmask); } while (r > max);
|
||||||
|
return r;
|
||||||
|
};
|
||||||
|
|
||||||
// Split a comma seperated string, ignoring commas in quotes.
|
// Split a comma seperated string, ignoring commas in quotes.
|
||||||
module.exports.quoteSplit = function (str) {
|
module.exports.quoteSplit = function (str) {
|
||||||
|
|
|
@ -178,7 +178,8 @@ module.exports.CreateMultiServer = function (parent, args) {
|
||||||
|
|
||||||
// Get the next retry time in milliseconds
|
// Get the next retry time in milliseconds
|
||||||
function getConnectRetryTime() {
|
function getConnectRetryTime() {
|
||||||
if (obj.retryBackoff < 30000) { obj.retryBackoff += ((require('crypto').randomBytes(4).readUInt32BE(0) % 3000) + 1000); }
|
// The (random & 0x1FFF) creates a random number between 0 and 4096.
|
||||||
|
if (obj.retryBackoff < 30000) { obj.retryBackoff += ((require('crypto').randomBytes(4).readUInt32BE(0) & 0x1FFF) + 1000); }
|
||||||
return obj.retryBackoff;
|
return obj.retryBackoff;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue