mirror of https://github.com/lukechilds/node.git
Browse Source
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>v4.x
Fedor Indutny
9 years ago
committed by
Myles Borins
2 changed files with 47 additions and 1 deletions
@ -0,0 +1,42 @@ |
|||||
|
'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('clientError', 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)); |
||||
|
})); |
||||
|
})); |
Loading…
Reference in new issue