node/test/parallel/test-tls-async-cb-after-socket-end.js
James M Snell dcccbfdc79 src: refactor require('constants')
The require('constants') module is currently undocumented and mashes
together unrelated constants. This refactors the require('constants')
in favor of distinct os.constants, fs.constants, and crypto.constants
that are specific to the modules for which they are relevant. The
next step is to document those within the specific modules.

PR-URL: https://github.com/nodejs/node/pull/6534
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: Robert Lindstaedt <robert.lindstaedt@gmail.com>
2016-05-17 11:05:18 -07:00

73 lines
1.4 KiB
JavaScript

'use strict';
var common = require('../common');
var path = require('path');
var fs = require('fs');
const SSL_OP_NO_TICKET = require('crypto').constants.SSL_OP_NO_TICKET;
if (!common.hasCrypto) {
common.skip('missing crypto');
return;
}
var tls = require('tls');
var options = {
secureOptions: SSL_OP_NO_TICKET,
key: fs.readFileSync(path.join(common.fixturesDir, 'test_key.pem')),
cert: fs.readFileSync(path.join(common.fixturesDir, 'test_cert.pem'))
};
var server = tls.createServer(options, function(c) {
});
var sessionCb = null;
var client = null;
server.on('newSession', function(key, session, done) {
done();
});
server.on('resumeSession', function(id, cb) {
sessionCb = cb;
next();
});
server.listen(common.PORT, function() {
var clientOpts = {
port: common.PORT,
rejectUnauthorized: false,
session: false
};
var s1 = tls.connect(clientOpts, function() {
clientOpts.session = s1.getSession();
console.log('1st secure');
s1.destroy();
var s2 = tls.connect(clientOpts, function(s) {
console.log('2nd secure');
s2.destroy();
}).on('connect', function() {
console.log('2nd connected');
client = s2;
next();
});
});
});
function next() {
if (!client || !sessionCb)
return;
client.destroy();
setTimeout(function() {
sessionCb();
server.close();
}, 100);
}