Skip to content

Commit ff7166d

Browse files
committed
fix(connect): fixed syntax issue in connect error handler
Connect error handler was attempting to read properties off of an error that had a chance of being null. Removed that, and replaced the error generation to be more explicit. Fixes NODE-1960 Fixes NODE-1968
1 parent 41e7c7e commit ff7166d

File tree

1 file changed

+14
-2
lines changed

1 file changed

+14
-2
lines changed

lib/core/connection/connect.js

+14-2
Original file line numberDiff line numberDiff line change
@@ -281,10 +281,9 @@ function makeConnection(family, options, _callback) {
281281
const errorEvents = ['error', 'close', 'timeout', 'parseError', 'connect'];
282282
function errorHandler(eventName) {
283283
return err => {
284-
if (err == null || err === false) err = true;
285284
errorEvents.forEach(event => socket.removeAllListeners(event));
286285
socket.removeListener('connect', connectHandler);
287-
callback(new MongoNetworkError(err.message), eventName);
286+
callback(connectionFailureError(eventName, err), eventName);
288287
};
289288
}
290289

@@ -355,4 +354,17 @@ function authenticate(conn, credentials, callback) {
355354
});
356355
}
357356

357+
function connectionFailureError(type, err) {
358+
switch (type) {
359+
case 'error':
360+
return new MongoNetworkError(err);
361+
case 'timeout':
362+
return new MongoNetworkError(`connection timed out`);
363+
case 'close':
364+
return new MongoNetworkError(`connection closed`);
365+
default:
366+
return new MongoNetworkError(`unknown network error`);
367+
}
368+
}
369+
358370
module.exports = connect;

0 commit comments

Comments
 (0)