Socket
Socket
Sign inDemoInstall

mongodb-core

Package Overview
Dependencies
Maintainers
1
Versions
177
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

mongodb-core - npm Package Compare versions

Comparing version 1.3.1 to 1.3.2

5

HISTORY.md

@@ -0,1 +1,6 @@

1.3.2 2016-02-09
----------------
- Harden MessageHandler in server.js to avoid issues where we cannot find a callback for an operation.
- Ensure RequestId can never be larger than Max Number integer size.
1.3.1 2016-02-05

@@ -2,0 +7,0 @@ ----------------

15

lib/connection/commands.js

@@ -27,2 +27,5 @@ "use strict";

// Request Id Max Value in JS
var JS_INT_MAX = 0x20000000000000;
// Response flags

@@ -60,3 +63,3 @@ var CURSOR_NOT_FOUND = 0;

this.returnFieldSelector = options.returnFieldSelector || null;
this.requestId = _requestId++;
this.requestId = (_requestId++) % JS_INT_MAX;

@@ -83,3 +86,3 @@ // Serialization option

Query.prototype.incRequestId = function() {
this.requestId = _requestId++;
this.requestId = (_requestId++) % JS_INT_MAX;
}

@@ -90,3 +93,3 @@

Query.nextRequestId = function() {
return _requestId + 1;
return (_requestId + 1) % JS_INT_MAX;
}

@@ -226,3 +229,3 @@

Query.getRequestId = function() {
return ++_requestId;
return (++_requestId) % JS_INT_MAX;
}

@@ -236,3 +239,3 @@

this.numberToReturn = opts.numberToReturn || 0;
this.requestId = _requestId++;
this.requestId = (_requestId++) % JS_INT_MAX;
this.bson = bson;

@@ -323,3 +326,3 @@ this.ns = ns;

var KillCursor = function(bson, cursorIds) {
this.requestId = _requestId++;
this.requestId = (_requestId++) % JS_INT_MAX;
this.cursorIds = cursorIds;

@@ -326,0 +329,0 @@ }

@@ -556,3 +556,2 @@ "use strict";

ReplSet.prototype.auth = function(mechanism, db) {
// console.log("=========================== REPLSET.auth")
var allArgs = Array.prototype.slice.call(arguments, 0).slice(0);

@@ -945,7 +944,2 @@ var self = this;

var haveAvailableServers = function(state) {
// console.log("!---------------------------------------------------------------")
// console.dir("state.disconnectedServers.length = " + state.disconnectedServers.length)
// console.dir("state.replState.secondaries.length = " + state.replState.secondaries.length)
// console.dir("state.replState.arbiters.length = " + state.replState.arbiters.length)
// console.dir("state.replState.primary = " + (state.replState.primary != null))
if(state.disconnectedServers.length == 0

@@ -960,7 +954,5 @@ && state.replState.secondaries.length == 0

return function() {
// console.log("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ execute replicasetInquirer :: " + state.replState.state)
if(state.replState.state == DESTROYED) return
// We have no connections we need to reseed the disconnected list
if(!haveAvailableServers(state)) {
// console.log("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ replicasetInquirer 0")
// For all entries in the seedlist build a server instance

@@ -991,4 +983,2 @@ state.disconnectedServers = state.seedlist.map(function(e) {

// console.log("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ execute replicasetInquirer 2")
// Process already running don't rerun

@@ -1015,4 +1005,2 @@ if(state.highAvailabilityProcessRunning) return;

// console.log("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ execute replicasetInquirer 3")
// Emit replicasetInquirer

@@ -1023,3 +1011,2 @@ self.emit('ha', 'start', {norepeat: norepeat, id: localHaId, state: state.replState ? state.replState.toJSON() : {}});

while(state.disconnectedServers.length > 0) {
// console.log("!!!!!!!!!!!!!!!!!!!!!!!!!!! ATTEMPT TO RECONNECT")
// Get the first disconnected server

@@ -1034,6 +1021,2 @@ var server = state.disconnectedServers.shift();

// console.log("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! SERVER")
// console.log("&&&&&&&&&&&&&&&&&&&&& reconnect to server :: " + server.name)
// console.dir(server.s.options)
// Ensure we schedule the opening of new socket

@@ -1050,3 +1033,2 @@ // on separate ticks of the event loop

}
// console.log("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ execute replicasetInquirer 4")

@@ -1059,16 +1041,11 @@ // Cleanup state (removed disconnected servers)

var serversLeft = servers.length;
// console.log("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ execute replicasetInquirer 5 :: " + serversLeft)
// If no servers and we are not destroyed keep pinging
if(servers.length == 0 && state.replState.state == CONNECTED) {
// console.log("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ execute replicasetInquirer 6:1")
// Emit ha process end
self.emit('ha', 'end', {norepeat: norepeat, id: localHaId, state: state.replState ? state.replState.toJSON() : {}});
// console.log("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ execute replicasetInquirer 6:2")
// Ended highAvailabilityProcessRunning
state.highAvailabilityProcessRunning = false;
// console.log("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ execute replicasetInquirer 6:3 :: " + norepeat)
// Restart ha process
if(!norepeat) setHaTimer(self, state);
// console.log("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ execute replicasetInquirer 6:4")
return;

@@ -1098,8 +1075,4 @@ }

var timeoutId = timeoutServer(server);
// console.log("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ execute replicasetInquirer 1:1")
// Execute ismaster
server.command('admin.$cmd', { ismaster:true }, { monitoring:true }, function(err, r) {
// console.log("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ execute replicasetInquirer 1:2")
// console.log("$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ replicasetInquirer :: " + new Date().getTime())
// if(r)console.dir(r.result)
// Clear out the timeoutServer

@@ -1230,4 +1203,2 @@ clearTimeout(timeoutId);

return function(err, server) {
// console.log("!!!!!!!!!!!!!!!!!!!! TEMP ERROR HANDLER REPLSET")
// console.dir(err)
// Log the information

@@ -1239,3 +1210,2 @@ if(state.logger.isInfo()) state.logger.info(f('[%s] server %s disconnected', state.id, server.lastIsMaster() ? server.lastIsMaster().me : server.name));

});
// console.log("!!!!!!!!!!!!!!!!!!!! TEMP ERROR HANDLER REPLSET 1")

@@ -1250,9 +1220,5 @@ // Connection is destroyed, ignore

// console.log("!!!!!!!!!!!!!!!!!!!! TEMP ERROR HANDLER REPLSET 2")
// Push to list of disconnected servers
addToListIfNotExist(state.disconnectedServers, server);
// console.log("!!!!!!!!!!!!!!!!!!!! TEMP ERROR HANDLER REPLSET 3")
// End connection operation if we have no legal replicaset state

@@ -1262,7 +1228,5 @@ if(state.initialConnectionServers == 0 && state.replState.state == CONNECTING) {

|| (!state.secondaryOnlyConnectionAllowed && !state.replState.isPrimaryConnected())) {
// console.log("----- REPLSET 0")
if(state.logger.isInfo()) state.logger.info(f('[%s] no valid seed servers in list', state.id));
if(self.listeners('error').length > 0) {
// console.log("----- REPLSET 1")
return self.emit('error', new MongoError('no valid seed servers in list'));

@@ -1273,4 +1237,2 @@ }

// console.log("!!!!!!!!!!!!!!!!!!!! TEMP ERROR HANDLER REPLSET 4")
// If the number of disconnected servers is equal to

@@ -1280,7 +1242,5 @@ // the number of seed servers we cannot connect

if(state.emitError && self.listeners('error').length > 0) {
// console.log("----- REPLSET 2")
if(state.logger.isInfo()) state.logger.info(f('[%s] no valid seed servers in list', state.id));
if(self.listeners('error').length > 0) {
// console.log("----- REPLSET 3")
self.emit('error', new MongoError('no valid seed servers in list'));

@@ -1290,4 +1250,2 @@ }

}
// console.log("!!!!!!!!!!!!!!!!!!!! TEMP ERROR HANDLER REPLSET 5")
}

@@ -1301,4 +1259,2 @@ }

return function(server) {
// console.log(" --------------------------- connectHandler 0")
// console.log("SERVER CONNECTED")
if(state.logger.isInfo()) state.logger.info(f('[%s] connected to %s', state.id, server.name));

@@ -1385,3 +1341,2 @@ // Destroyed connection

// console.log(" --------------------------- connectHandler 1 :: " + self.s.authInProgress)
// Save up new members to be authenticated against

@@ -1392,4 +1347,2 @@ if(self.s.authInProgress) {

// console.log(" --------------------------- connectHandler 2")
// No credentials just process server

@@ -1399,3 +1352,2 @@ if(state.credentials.length == 0) return processNewServer();

var count = state.credentials.length;
// console.log(" --------------------------- connectHandler 3 :: " + count)
// Apply the credentials

@@ -1406,3 +1358,2 @@ for(var i = 0; i < state.credentials.length; i++) {

if(count == 0) {
// console.log(" --------------------------- connectHandler 4")
processNewServer();

@@ -1474,4 +1425,2 @@ }

// console.log("%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Server :: connectToServer :: " + opts.port)
// Create a new server instance

@@ -1519,3 +1468,2 @@ var server = new Server(opts);

return function(err, server) {
// console.log("!!!!!!!!!!!!!!!!!!!!! err handler REPLSET")
if(state.replState.state == DESTROYED) return;

@@ -1529,3 +1477,2 @@ if(state.logger.isInfo()) state.logger.info(f('[%s] server %s errored out with %s', state.id, server.lastIsMaster() ? server.lastIsMaster().me : server.name, JSON.stringify(err)));

setTimeout(function() {
// replicasetInquirer(self, self.s, true)();
replicasetInquirer(self, self.s, self.s.highAvailabilityProcessRunning)();

@@ -1538,3 +1485,2 @@ }, self.s.minHeartbeatFrequencyMS);

return function(err, server) {
// console.log("!!!!!!!!!!!!!!!!!!!!! timeout handler REPLSET")
if(state.replState.state == DESTROYED) return;

@@ -1547,3 +1493,2 @@ if(state.logger.isInfo()) state.logger.info(f('[%s] server %s timed out', state.id, server.lastIsMaster() ? server.lastIsMaster().me : server.name));

setTimeout(function() {
// replicasetInquirer(self, self.s, true)();
replicasetInquirer(self, self.s, self.s.highAvailabilityProcessRunning)();

@@ -1556,3 +1501,2 @@ }, self.s.minHeartbeatFrequencyMS);

return function(err, server) {
// console.log("!!!!!!!!!!!!!!!!!!!!! close handler REPLSET")
if(state.replState.state == DESTROYED) return;

@@ -1559,0 +1503,0 @@ if(state.logger.isInfo()) state.logger.info(f('[%s] server %s closed', state.id, server.lastIsMaster() ? server.lastIsMaster().me : server.name));

62

lib/topologies/server.js

@@ -259,6 +259,2 @@ "use strict";

return function(response, connection) {
// console.log("!----------------------- messageHandler " + self.s.pool.availableConnections.length + " :: " + connection.id)
// Release the connection back to the pool
// self.s.pool.connectionAvailable(connection);
// Attempt to parse the message

@@ -272,7 +268,4 @@ try {

// console.dir(Object.keys(cb))
// console.dir(response.documents)
// If no
if(!cb.noRelease) {
if(cb && !cb.noRelease) {
self.s.pool.connectionAvailable(connection);

@@ -295,4 +288,2 @@ }

if(state.state == DISCONNECTED || state.state == DESTROYED) return;
// console.log("%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% errorHandler")
// console.log(err)
// Flush the connection operations

@@ -306,6 +297,4 @@ if(self.s.callbacks) {

// console.log("%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% errorHandler 1")
// No more connections left, emit a close
if(state.pool.getAll().length == 0) {
// console.log("%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% errorHandler 2 :: " + state.emitError)
// Set disconnected state

@@ -320,3 +309,2 @@ state.state = DISCONNECTED;

self.destroy();
// console.log("!!!!!!!!!!!!! EMIT ERROR :: " + state.emitError + " :: " + self.listeners('error').length + " :: " + state.reconnect)
// Emit error event

@@ -335,3 +323,2 @@ if(state.emitError && self.listeners('error').length > 0) self.emit('error', err, self);

if(state.state == DISCONNECTED || state.state == DESTROYED) return;
// console.log("%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% fatalErrorHandler")
// Flush the connection operations

@@ -370,7 +357,2 @@ if(self.s.callbacks) {

if(state.state == DISCONNECTED || state.state == DESTROYED) return;
// console.log("%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% timeoutHandler = " + connection.port + " :: " + state.pool.getAll().length)
// console.log("----------------------- pool.write _execute 0 :: availableConnections = " + self.s.pool.availableConnections.length)
// console.log("----------------------- pool.write _execute 0 :: inUseConnections = " + self.s.pool.inUseConnections.length)
// console.log("----------------------- pool.write _execute 0 :: newConnections = " + self.s.pool.newConnections.length)
// console.log("----------------------- pool.write _execute 0 :: queue = " + self.s.pool.queue.length)

@@ -398,3 +380,2 @@ // Flush the connection operations

if(state.reconnect) setTimeout(function() {
// state.currentReconnectRetry = state.reconnectTries,
reconnectServer(self, state)

@@ -411,10 +392,5 @@ }, state.reconnectInterval);

if(state.state == DISCONNECTED || state.state == DESTROYED) return;
// console.log("%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% closeHandler :: " + state.pool.getAll().length)
// // Emit error event
// self.emit('close', err, self);
// No more connections left, emit a close
if(state.pool.getAll().length == 0) {
// console.log("%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% closeHandler 1 :: " + state.pool.getAll().length)
// Set state to disconnected

@@ -425,13 +401,8 @@ state.state = DISCONNECTED;

if(state.logger.isInfo()) state.logger.info(f('server %s closed', self.name));
// console.log("%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% closeHandler 2 :: " + state.pool.getAll().length)
// Flush out all the callbacks
if(state.callbacks) state.callbacks.flush(new MongoError(f("server %s sockets closed", self.name)));
// console.log("%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% closeHandler 3 :: " + state.pool.getAll().length)
// Emit error event
self.emit('close', err, self);
// console.log("!!!!!!!!!!!!! EMIT CLOSE :: " + state.reconnect)
// console.log("%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% closeHandler 1 :: " + state.pool.getAll().length)
// If we specified the driver to reconnect perform it
if(state.reconnect) setTimeout(function() {
// state.currentReconnectRetry = state.reconnectTries,
reconnectServer(self, state)

@@ -446,3 +417,2 @@ }, state.reconnectInterval);

var connectHandler = function(self, state) {
// console.log("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! server connect :: " + self.name)
// Apply all stored authentications

@@ -456,3 +426,2 @@ var applyAuthentications = function(callback) {

var connections = state.pool.getAll();
// console.log("~~~~~~~~~~~~~~~~~~~~~~~~~ connectHandler :: " + connections.length)
// Execute all providers

@@ -619,5 +588,2 @@ var count = keys.length;

// console.log(")))))))))))))))))))))))))))))))))))))))))))))))))))))")
// console.dir(options)
// Keeps all the internal state of the server

@@ -779,8 +745,5 @@ this.s = {

self.s.pool.on('connection', function(connection) {
// console.log("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! NEW Connection :: " + connection.id + " -- server -- " + self.s.id + " -- " + self.s.options.port)
// No auth handler used, return the connection
var keys = Object.keys(self.s.authProviders);
if(keys.length == 0) return self.s.pool.connectionAvailable(connection);
// console.log("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! NEW Connection 1 :: " + keys.length)

@@ -794,16 +757,7 @@ // Get all connections

for(var i = 0; i < keys.length; i++) {
// console.log("------------------ authenticating against " + keys[i]);
// if(keys[i] == 'scram-sha-1') {
// console.dir(self.s.authProviders[keys[i]].authStore)
// }
// reauthenticate the connection
self.s.authProviders[keys[i]].reauthenticate(self, connections, function(err, r) {
// console.log("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! NEW Connection 1 auth :: ")
// console.dir(err)
// console.dir(r)
count = count - 1;
// We are done, emit reconnect event
if(count == 0) {
// console.log("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! NEW Connection 2 auth :: " + r)
// console.dir(err)
return self.s.pool.connectionAvailable(connection);

@@ -937,5 +891,2 @@ }

if(err) return callback(err);
// if(result && result.connection) {
// console.log("====== received result from connection " + result.connection.id)
// }

@@ -962,3 +913,2 @@ if(result.documents[0]['$err']

if(options.connection) {
// console.log("!!!!!!!!!!!!!!!!!!!!!! ONE")
// Add the reference to the connection to the callback so

@@ -971,3 +921,2 @@ // we can flush only the affected operations

} else {
// console.log("!!!!!!!!!!!!!!!!!!!!!! TWO")
self.s.pool.write(query.toBin(), commandCallback, options);

@@ -1000,6 +949,2 @@ }

if(typeof options == 'function') callback = options, options = {};
// console.log("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! execute command :: " + this.name)
// console.dir(cmd)
// console.dir(this.s.authProviders['scram-sha-1'].authStore)
// console.dir(Object.keys(options))
var self = this;

@@ -1155,3 +1100,2 @@ if(this.s.state == DESTROYED) return callback(new MongoError(f('topology was destroyed')));

Server.prototype.auth = function(mechanism, db) {
// console.log("=========================== SERVER.auth -- server -- " + this.s.id + " :: " + this.s.options.port)
var self = this;

@@ -1178,5 +1122,2 @@ var args = Array.prototype.slice.call(arguments, 2);

var finalArguments = [self, connections, db].concat(args.slice(0)).concat([function(err, r) {
// console.log("=========================== SERVER.auth 0 :: " + self.s.id)
// console.dir(self.s.authProviders[mechanism].authStore)
// console.dir(err)
if(err) return callback(err);

@@ -1214,3 +1155,2 @@ if(!r) return callback(new MongoError('could not authenticate'));

Server.prototype.addAuthProvider = function(name, provider) {
// console.log("===== Server.prototype.addAuthProvider :: " + this.name)
var self = this;

@@ -1217,0 +1157,0 @@ self.s.authProviders[name] = provider;

{
"name": "mongodb-core",
"version": "1.3.1",
"version": "1.3.2",
"description": "Core MongoDB driver functionality, no bells and whistles and meant for integration not end applications",

@@ -5,0 +5,0 @@ "main": "index.js",

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc