diff --git a/packages/pg/lib/connection.js b/packages/pg/lib/connection.js index 1487dce8..6bc0952e 100644 --- a/packages/pg/lib/connection.js +++ b/packages/pg/lib/connection.js @@ -85,7 +85,11 @@ class Connection extends EventEmitter { if (net.isIP(host) === 0) { options.servername = host } - self.stream = tls.connect(options) + try { + self.stream = tls.connect(options) + } catch (err) { + return self.emit('error', err) + } self.attachListeners(self.stream) self.stream.on('error', reportStreamError) diff --git a/packages/pg/test/integration/gh-issues/2307-tests.js b/packages/pg/test/integration/gh-issues/2307-tests.js new file mode 100644 index 00000000..d5f7c059 --- /dev/null +++ b/packages/pg/test/integration/gh-issues/2307-tests.js @@ -0,0 +1,24 @@ +'use strict' + +const pg = require('../../../lib') +const helper = require('../test-helper') + +const suite = new helper.Suite() + +suite.test('bad ssl credentials do not cause crash', (done) => { + const config = { + ssl: { + ca: 'invalid_value', + key: 'invalid_value', + cert: 'invalid_value', + }, + } + + const client = new pg.Client(config) + + client.connect((err) => { + assert(err) + client.end() + done() + }) +})