@@ -334,16 +334,21 @@ function createServer(mongoClient, options, callback) {
334
334
// Propagate the events to the client
335
335
const collectedEvents = collectEvents ( mongoClient , servers [ 0 ] ) ;
336
336
337
+ const server = servers [ 0 ] ;
338
+
337
339
// Connect to topology
338
- servers [ 0 ] . connect ( options , ( err , topology ) => {
339
- if ( err ) return callback ( err ) ;
340
+ server . connect ( options , ( err , topology ) => {
341
+ if ( err ) {
342
+ server . close ( true ) ;
343
+ return callback ( err ) ;
344
+ }
340
345
// Clear out all the collected event listeners
341
- clearAllEvents ( servers [ 0 ] ) ;
346
+ clearAllEvents ( server ) ;
342
347
343
348
// Relay all the events
344
- relayEvents ( mongoClient , servers [ 0 ] ) ;
349
+ relayEvents ( mongoClient , server ) ;
345
350
// Add listeners
346
- addListeners ( mongoClient , servers [ 0 ] ) ;
351
+ addListeners ( mongoClient , server ) ;
347
352
// Check if we are really speaking to a mongos
348
353
const ismaster = topology . lastIsMaster ( ) ;
349
354
@@ -388,7 +393,10 @@ function createTopology(mongoClient, topologyType, options, callback) {
388
393
389
394
// Open the connection
390
395
topology . connect ( options , ( err , topology ) => {
391
- if ( err ) return callback ( err ) ;
396
+ if ( err ) {
397
+ topology . close ( true ) ;
398
+ return callback ( err ) ;
399
+ }
392
400
393
401
assignTopology ( mongoClient , topology ) ;
394
402
callback ( null , topology ) ;
0 commit comments