mongodb-core
Advanced tools
Comparing version 2.1.13 to 2.1.14
@@ -0,5 +1,12 @@ | ||
2.1.14 2017-07-07 | ||
----------------- | ||
* NODE-1073 updates scram.js hi() algorithm to utilize crypto.pbkdf2Sync() | ||
* NODE-1049 only include primary server if there are no secondary servers for | ||
readPrefrence secondaryPreferred | ||
* moved `assign` polyfill to shared utils, replace usage of `extend` in tests | ||
2.1.13 2017-06-19 | ||
----------------- | ||
- NODE-1039 ensure we force destroy server instances, forcing queue to be flushed. | ||
- Use actual server type in standalone SDAM events. | ||
* NODE-1039 ensure we force destroy server instances, forcing queue to be flushed. | ||
* Use actual server type in standalone SDAM events. | ||
@@ -6,0 +13,0 @@ 2.1.12 2017-06-02 |
@@ -77,22 +77,15 @@ "use strict"; | ||
// Create a final digest | ||
// hiCache stores previous salt creations so it's not regenerated per-pool member | ||
var _hiCache = {}; | ||
var hi = function(data, salt, iterations) { | ||
// Create digest | ||
var digest = function(msg) { | ||
var hmac = crypto.createHmac('sha1', data); | ||
hmac.update(msg); | ||
return new Buffer(hmac.digest('base64'), 'base64'); | ||
} | ||
// Create variables | ||
salt = Buffer.concat([salt, new Buffer('\x00\x00\x00\x01')]) | ||
var ui = digest(salt); | ||
var u1 = ui; | ||
for(var i = 0; i < iterations - 1; i++) { | ||
u1 = digest(u1); | ||
ui = xor(ui, u1); | ||
} | ||
return ui; | ||
var key = [data, salt.toString("base64"), iterations].join("_"); | ||
// check if we've already generated this salt | ||
if (_hiCache[key] !== undefined) { return _hiCache[key] } | ||
// generate the salt and store it in the cache for the next worker | ||
var data = crypto.pbkdf2Sync(data, salt, iterations, 20, "sha1"); | ||
_hiCache[key] = data; | ||
return data; | ||
} | ||
@@ -236,12 +229,3 @@ | ||
var clientFinal = [withoutProof, clientProof].join(','); | ||
// Generate server key | ||
hmac = crypto.createHmac('sha1', saltedPassword); | ||
hmac.update(new Buffer('Server Key')) | ||
var serverKey = new Buffer(hmac.digest('base64'), 'base64'); | ||
// Generate server signature | ||
hmac = crypto.createHmac('sha1', serverKey); | ||
hmac.update(new Buffer(authMsg)) | ||
// | ||
@@ -248,0 +232,0 @@ // Create continue message |
@@ -11,3 +11,3 @@ "use strict"; | ||
CommandResult = require('./command_result'), | ||
assign = require('../topologies/shared').assign; | ||
assign = require('../utils').assign; | ||
@@ -622,3 +622,3 @@ var MongoCR = require('../auth/mongocr') | ||
// Emit the connect event | ||
return self.emit('connect', self); | ||
return self.emit('connect', self); | ||
} | ||
@@ -873,3 +873,3 @@ | ||
// Destroy the topology | ||
// Destroy the topology | ||
return destroy(self, connections); | ||
@@ -911,3 +911,3 @@ } | ||
// } else if (self.queue.length > 0 && !this.reconnectId) { | ||
} else { | ||
@@ -914,0 +914,0 @@ // Ensure we empty the queue |
@@ -11,3 +11,3 @@ "use strict" | ||
Server = require('./server'), | ||
assign = require('./shared').assign, | ||
assign = require('../utils').assign, | ||
clone = require('./shared').clone, | ||
@@ -272,3 +272,3 @@ sdam = require('./shared'), | ||
address: this.name | ||
}); | ||
}); | ||
} | ||
@@ -398,3 +398,3 @@ } | ||
address: server.name | ||
}); | ||
}); | ||
@@ -566,3 +566,3 @@ // Emit the initial topology | ||
address: server.name | ||
}); | ||
}); | ||
@@ -773,3 +773,3 @@ // Add temp handlers | ||
address: x.name | ||
}); | ||
}); | ||
@@ -776,0 +776,0 @@ // Destroy the server |
@@ -762,4 +762,6 @@ "use strict" | ||
// Add primary to list if not a secondary read preference | ||
if(self.primary && readPreference.preference != 'secondary') { | ||
servers.push(self.primary); | ||
if(self.primary | ||
&& readPreference.preference != 'secondary' | ||
&& readPreference.preference != 'secondaryPreferred') { | ||
servers.push(self.primary); | ||
} | ||
@@ -772,2 +774,9 @@ | ||
// If we have a secondaryPreferred readPreference and no server add the primary | ||
if(self.primary | ||
&& servers.length == 0 | ||
&& readPreference.preference != 'secondaryPreferred') { | ||
servers.push(self.primary); | ||
} | ||
// Filter by tags | ||
@@ -812,4 +821,6 @@ servers = filterByTags(readPreference, servers); | ||
// Add primary to list if not a secondary read preference | ||
if(self.primary && readPreference.preference != 'secondary') { | ||
servers.push(self.primary); | ||
if(self.primary | ||
&& readPreference.preference != 'secondary' | ||
&& readPreference.preference != 'secondaryPreferred') { | ||
servers.push(self.primary); | ||
} | ||
@@ -822,2 +833,9 @@ | ||
// If we have a secondaryPreferred readPreference and no server add the primary | ||
if(servers.length == 0 | ||
&& self.primary | ||
&& readPreference.preference != 'secondaryPreferred') { | ||
servers.push(self.primary); | ||
} | ||
// Filter by tags | ||
@@ -824,0 +842,0 @@ servers = filterByTags(readPreference, servers); |
@@ -13,3 +13,3 @@ "use strict" | ||
ReplSetState = require('./replset_state'), | ||
assign = require('./shared').assign, | ||
assign = require('../utils').assign, | ||
clone = require('./shared').clone, | ||
@@ -439,3 +439,3 @@ Timeout = require('./shared').Timeout, | ||
var monitorServer = function(host, self, options) { | ||
// If this is not the initial scan | ||
// If this is not the initial scan | ||
// Is this server already being monitoried, then skip monitoring | ||
@@ -475,3 +475,3 @@ if(!options.haInterval) { | ||
// Filter out all called intervaliIds | ||
self.intervalIds = self.intervalIds.filter(function(intervalId) { | ||
self.intervalIds = self.intervalIds.filter(function(intervalId) { | ||
return intervalId.isRunning(); | ||
@@ -556,3 +556,3 @@ } ); | ||
return connectNewServers(self, self.s.replicaSetState.unknownServers, function(err) { | ||
// Don't emit errors if the connection was already | ||
// Don't emit errors if the connection was already | ||
if(self.state === DESTROYED || self.state === UNREFERENCED) { | ||
@@ -590,3 +590,3 @@ return; | ||
connectNewServers(self, self.s.replicaSetState.unknownServers, function() { | ||
var monitoringFrequencey = self.s.replicaSetState.hasPrimary() | ||
var monitoringFrequencey = self.s.replicaSetState.hasPrimary() | ||
? _haInterval : self.s.minHeartbeatFrequencyMS; | ||
@@ -593,0 +593,0 @@ |
@@ -18,3 +18,3 @@ "use strict" | ||
sdam = require('./shared'), | ||
assign = require('./shared').assign, | ||
assign = require('../utils').assign, | ||
createClientInfo = require('./shared').createClientInfo; | ||
@@ -21,0 +21,0 @@ |
@@ -183,27 +183,2 @@ "use strict" | ||
// Object.assign method or polyfille | ||
var assign = Object.assign ? Object.assign : function assign(target) { | ||
if (target === undefined || target === null) { | ||
throw new TypeError('Cannot convert first argument to object'); | ||
} | ||
var to = Object(target); | ||
for (var i = 1; i < arguments.length; i++) { | ||
var nextSource = arguments[i]; | ||
if (nextSource === undefined || nextSource === null) { | ||
continue; | ||
} | ||
var keysArray = Object.keys(Object(nextSource)); | ||
for (var nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex++) { | ||
var nextKey = keysArray[nextIndex]; | ||
var desc = Object.getOwnPropertyDescriptor(nextSource, nextKey); | ||
if (desc !== undefined && desc.enumerable) { | ||
to[nextKey] = nextSource[nextKey]; | ||
} | ||
} | ||
} | ||
return to; | ||
} | ||
// | ||
@@ -238,3 +213,3 @@ // Clone the options | ||
return timer !== false; | ||
}; | ||
}; | ||
} | ||
@@ -261,3 +236,3 @@ | ||
return timer !== false; | ||
}; | ||
}; | ||
} | ||
@@ -304,3 +279,3 @@ | ||
for(var i = 0; i < previous.servers.length; i++) { | ||
if(previous.servers[i].address.toLowerCase() | ||
if(previous.servers[i].address.toLowerCase() | ||
=== current.servers[j].address.toLowerCase()) { | ||
@@ -353,3 +328,2 @@ found = true; | ||
module.exports.cloneOptions = cloneOptions; | ||
module.exports.assign = assign; | ||
module.exports.createClientInfo = createClientInfo; | ||
@@ -356,0 +330,0 @@ module.exports.clone = clone; |
{ | ||
"name": "mongodb-core", | ||
"version": "2.1.13", | ||
"version": "2.1.14", | ||
"description": "Core MongoDB driver functionality, no bells and whistles and meant for integration not end applications", | ||
@@ -5,0 +5,0 @@ "main": "index.js", |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
New author
Supply chain riskA new npm collaborator published a version of the package for the first time. New collaborators are usually benign additions to a project, but do indicate a change to the security surface area of a package.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
445364
40
10520
3