diff --git a/packages/pg/lib/connection.js b/packages/pg/lib/connection.js index af4b8f13b..4d6a207f7 100644 --- a/packages/pg/lib/connection.js +++ b/packages/pg/lib/connection.js @@ -84,19 +84,20 @@ class Connection extends EventEmitter { socket: self.stream, } - if (self.ssl !== true) { - Object.assign(options, self.ssl) + try { + if (self.ssl !== true) { + Object.assign(options, self.ssl) - if ('key' in self.ssl) { - options.key = self.ssl.key + if ('key' in self.ssl) { + options.key = self.ssl.key + } + } + + var net = require('net') + if (net.isIP && net.isIP(host) === 0) { + options.servername = host } - } - var net = require('net') - if (net.isIP && net.isIP(host) === 0) { - options.servername = host - } - try { self.stream = getSecureStream(options) } catch (err) { return self.emit('error', err) diff --git a/packages/pg/test/integration/client/error-handling-tests.js b/packages/pg/test/integration/client/error-handling-tests.js index 4e879c9e0..e547d5618 100644 --- a/packages/pg/test/integration/client/error-handling-tests.js +++ b/packages/pg/test/integration/client/error-handling-tests.js @@ -191,6 +191,19 @@ suite.test('when connecting to an invalid host with callback', function (done) { }) }) +suite.test('when connecting with an invalid ssl value', function (done) { + var client = new Client({ + ssl: 'off', + }) + client.on('error', () => { + assert.fail('unexpected error event when connecting') + }) + client.connect(function (error, client) { + assert(error instanceof Error) + done() + }) +}) + suite.test('when connecting to invalid host with promise', function (done) { var client = new Client({ user: 'very invalid username',