Skip to content

Commit a516903

Browse files
authored
fix: remove catch for synchronous socket errors and remove validation on nodejs option (#2746)
NODE-3061
1 parent ee1a4d3 commit a516903

File tree

5 files changed

+13
-35
lines changed

5 files changed

+13
-35
lines changed

package-lock.json

+3-3
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@
3939
"@types/chai-subset": "^1.3.3",
4040
"@types/kerberos": "^1.1.0",
4141
"@types/mocha": "^8.2.0",
42-
"@types/node": "^14.6.4",
42+
"@types/node": "^14.14.31",
4343
"@types/saslprep": "^1.0.0",
4444
"@types/semver": "^7.3.4",
4545
"@typescript-eslint/eslint-plugin": "^4.15.1",

src/cmap/connect.ts

+7-20
Original file line numberDiff line numberDiff line change
@@ -247,15 +247,6 @@ function parseSslOptions(options: ConnectionOptions): TLSConnectionOpts {
247247
}
248248
}
249249

250-
// Override checkServerIdentity behavior
251-
if (!options.checkServerIdentity) {
252-
// Skip the identity check by retuning undefined as per node documents
253-
// https://nodejs.org/api/tls.html#tls_tls_connect_options_callback
254-
result.checkServerIdentity = () => undefined;
255-
} else if (typeof options.checkServerIdentity === 'function') {
256-
result.checkServerIdentity = options.checkServerIdentity;
257-
}
258-
259250
// Set default sni servername to be the same as host
260251
if (result.servername == null) {
261252
result.servername = result.host;
@@ -289,18 +280,14 @@ function makeConnection(options: ConnectionOptions, _callback: CallbackWithType<
289280
_callback(err, ret);
290281
};
291282

292-
try {
293-
if (useTLS) {
294-
const tlsSocket = tls.connect(parseSslOptions(options));
295-
if (typeof tlsSocket.disableRenegotiation === 'function') {
296-
tlsSocket.disableRenegotiation();
297-
}
298-
socket = tlsSocket;
299-
} else {
300-
socket = net.createConnection(parseConnectOptions(options));
283+
if (useTLS) {
284+
const tlsSocket = tls.connect(parseSslOptions(options));
285+
if (typeof tlsSocket.disableRenegotiation === 'function') {
286+
tlsSocket.disableRenegotiation();
301287
}
302-
} catch (err) {
303-
return callback(err);
288+
socket = tlsSocket;
289+
} else {
290+
socket = net.createConnection(parseConnectOptions(options));
304291
}
305292

306293
socket.setKeepAlive(keepAlive, keepAliveInitialDelay);

src/connection_string.ts

+1-10
Original file line numberDiff line numberDiff line change
@@ -575,16 +575,6 @@ export const OPTIONS = {
575575
checkKeys: {
576576
type: 'boolean'
577577
},
578-
checkServerIdentity: {
579-
target: 'checkServerIdentity',
580-
transform({
581-
values: [value]
582-
}): boolean | ((hostname: string, cert: Document) => Error | undefined) {
583-
if (typeof value !== 'boolean' && typeof value !== 'function')
584-
throw new MongoParseError('check server identity must be a boolean or custom function');
585-
return value as boolean | ((hostname: string, cert: Document) => Error | undefined);
586-
}
587-
},
588578
compressors: {
589579
default: 'none',
590580
target: 'compressors',
@@ -1041,6 +1031,7 @@ export const OPTIONS = {
10411031
enableTrace: { type: 'any' },
10421032
requestCert: { type: 'any' },
10431033
rejectUnauthorized: { type: 'any' },
1034+
checkServerIdentity: { type: 'any' },
10441035
ALPNProtocols: { type: 'any' },
10451036
SNICallback: { type: 'any' },
10461037
session: { type: 'any' },

test/functional/index.test.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -1174,7 +1174,7 @@ describe('Indexes', function () {
11741174
metadata: {
11751175
requires: {
11761176
topology: ['single', 'replicaset', 'sharded', 'ssl', 'heap', 'wiredtiger'],
1177-
mongodb: '>=3.0.0'
1177+
mongodb: '>=3.0.0 <=4.8.0'
11781178
}
11791179
},
11801180

0 commit comments

Comments
 (0)