1234567891011121314151617181920212223242526272829303132333435363738394041 |
- 'use strict'
- var tls = require('tls')
- function buildBuilder (mqttClient, opts) {
- var connection
- opts.port = opts.port || 8883
- opts.host = opts.hostname || opts.host || 'localhost'
- opts.rejectUnauthorized = opts.rejectUnauthorized !== false
- delete opts.path
- connection = tls.connect(opts)
- /* eslint no-use-before-define: [2, "nofunc"] */
- connection.on('secureConnect', function () {
- if (opts.rejectUnauthorized && !connection.authorized) {
- connection.emit('error', new Error('TLS not authorized'))
- } else {
- connection.removeListener('error', handleTLSerrors)
- }
- })
- function handleTLSerrors (err) {
- // How can I get verify this error is a tls error?
- if (opts.rejectUnauthorized) {
- mqttClient.emit('error', err)
- }
- // close this connection to match the behaviour of net
- // otherwise all we get is an error from the connection
- // and close event doesn't fire. This is a work around
- // to enable the reconnect code to work the same as with
- // net.createConnection
- connection.end()
- }
- connection.on('error', handleTLSerrors)
- return connection
- }
- module.exports = buildBuilder
|