diff --git a/src/connection_string.ts b/src/connection_string.ts index 831e19dd26..e4f771543f 100644 --- a/src/connection_string.ts +++ b/src/connection_string.ts @@ -232,7 +232,9 @@ export function parseOptions( if (isSRV) { // SRV Record is resolved upon connecting mongoOptions.srvHost = hosts[0]; - options.tls = true; + if (!url.searchParams.has('tls') && !url.searchParams.has('ssl')) { + options.tls = true; + } } const urlOptions = new CaseInsensitiveMap(); diff --git a/test/unit/core/mongodb_srv.test.js b/test/unit/core/mongodb_srv.test.js index a40d7f9252..1b6ef023b6 100644 --- a/test/unit/core/mongodb_srv.test.js +++ b/test/unit/core/mongodb_srv.test.js @@ -38,8 +38,14 @@ describe('mongodb+srv', function () { expect(result).to.exist; // Implicit SRV options must be set. expect(options.directConnection).to.be.false; - expect(options.tls).to.be.true; const testOptions = test[1].options; + if (testOptions && 'tls' in testOptions) { + expect(options).to.have.property('tls', testOptions.tls); + } else if (testOptions && 'ssl' in testOptions) { + expect(options).to.have.property('tls', testOptions.ssl); + } else { + expect(options.tls).to.be.true; + } if (testOptions && testOptions.replicaSet) { expect(options).to.have.property('replicaSet', testOptions.replicaSet); } diff --git a/test/unit/mongo_client_options.test.js b/test/unit/mongo_client_options.test.js index 7cac142ce2..f6ea142272 100644 --- a/test/unit/mongo_client_options.test.js +++ b/test/unit/mongo_client_options.test.js @@ -229,6 +229,19 @@ describe('MongoOptions', function () { it('srvHost saved to options for later resolution', function () { const options = parseOptions('mongodb+srv://server.example.com/'); expect(options).has.property('srvHost', 'server.example.com'); + expect(options).has.property('tls', true); + }); + + it('ssl= can be used to set tls=false', function () { + const options = parseOptions('mongodb+srv://server.example.com/?ssl=false'); + expect(options).has.property('srvHost', 'server.example.com'); + expect(options).has.property('tls', false); + }); + + it('tls= can be used to set tls=false', function () { + const options = parseOptions('mongodb+srv://server.example.com/?tls=false'); + expect(options).has.property('srvHost', 'server.example.com'); + expect(options).has.property('tls', false); }); it('supports ReadPreference option in url', function () {