node/test/parallel/test-tls-empty-sni-context.js
Fedor Indutny 9cac8c894e tls: catch certCbDone exceptions
Catch and emit `certCbDone` exceptions instead of throwing them as
`uncaughtException` and crashing the whole process.

Fix: https://github.com/nodejs/node/issues/6822
PR-URL: https://github.com/nodejs/node/pull/6887
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
2016-05-25 16:07:30 -04:00

43 lines
1.0 KiB
JavaScript

'use strict';
if (!process.features.tls_sni) {
console.log('1..0 # Skipped: node compiled without OpenSSL or ' +
'with old OpenSSL version.');
return;
}
const common = require('../common');
const assert = require('assert');
if (!common.hasCrypto) {
console.log('1..0 # Skipped: missing crypto');
return;
}
const tls = require('tls');
const options = {
SNICallback: (name, callback) => {
callback(null, tls.createSecureContext());
}
};
const server = tls.createServer(options, (c) => {
common.fail('Should not be called');
}).on('tlsClientError', common.mustCall((err, c) => {
assert(/SSL_use_certificate:passed a null parameter/i.test(err.message));
server.close();
})).listen(common.PORT, common.mustCall(() => {
const c = tls.connect({
port: common.PORT,
rejectUnauthorized: false,
servername: 'any.name'
}, () => {
common.fail('Should not be called');
});
c.on('error', common.mustCall((err) => {
assert(/socket hang up/.test(err.message));
}));
}));