Skip to content

Commit 6ec5042

Browse files
committed
NODE-770 Cannot set socketTimeoutMS to 0 in MongoClient.connect
1 parent 16bc39f commit 6ec5042

File tree

2 files changed

+35
-4
lines changed

2 files changed

+35
-4
lines changed

lib/mongo_client.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -159,8 +159,8 @@ function translateOptions(options) {
159159
}
160160

161161
// Set the socket and connection timeouts
162-
if(!options.socketTimeoutMS) options.socketTimeoutMS = 30000;
163-
if(!options.connectTimeoutMS) options.connectTimeoutMS = 30000;
162+
if(!options.socketTimeoutMS == null) options.socketTimeoutMS = 30000;
163+
if(!options.connectTimeoutMS == null) options.connectTimeoutMS = 30000;
164164

165165
// Create server instances
166166
return options.servers.map(function(serverObj) {
@@ -270,8 +270,8 @@ var connect = function(url, options, callback) {
270270
_finalOptions = createUnifiedOptions(_finalOptions, options);
271271

272272
// Check if we have connection and socket timeout set
273-
if(!_finalOptions.socketTimeoutMS) _finalOptions.socketTimeoutMS = 120000;
274-
if(!_finalOptions.connectTimeoutMS) _finalOptions.connectTimeoutMS = 120000;
273+
if(!_finalOptions.socketTimeoutMS == null) _finalOptions.socketTimeoutMS = 120000;
274+
if(!_finalOptions.connectTimeoutMS == null) _finalOptions.connectTimeoutMS = 120000;
275275

276276
// Failure modes
277277
if(object.servers.length == 0) {

test/functional/mongo_client_tests.js

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -584,3 +584,34 @@ exports['Should correctly pass through appname'] = {
584584
});
585585
}
586586
}
587+
588+
exports['Should correctly pass through socketTimeoutMS and connectTimeoutMS'] = {
589+
metadata: {
590+
requires: {
591+
node: ">0.8.0",
592+
topology: ['single', 'replicaset', 'sharded']
593+
}
594+
},
595+
596+
// The actual test we wish to run
597+
test: function(configuration, test) {
598+
var MongoClient = configuration.require.MongoClient;
599+
MongoClient.connect(configuration.url(), {
600+
socketTimeoutMS: 0,
601+
connectTimeoutMS: 0
602+
}, function(err, db) {
603+
test.equal(null, err);
604+
605+
if(db.s.topology.s.clonedOptions) {
606+
test.equal(0, db.s.topology.s.clonedOptions.connectionTimeout);
607+
test.equal(0, db.s.topology.s.clonedOptions.socketTimeout);
608+
} else {
609+
test.equal(0, db.s.topology.s.options.connectionTimeout);
610+
test.equal(0, db.s.topology.s.options.socketTimeout);
611+
}
612+
613+
db.close();
614+
test.done();
615+
});
616+
}
617+
}

0 commit comments

Comments
 (0)