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