mirror of https://github.com/lukechilds/node.git
Browse Source
When loading session, OCSP response, SNI, always check that the `self._handle` is present. If it is not - the socket was closed - and we should emit the error instead of throwing an uncaught exception. Fix: https://github.com/joyent/node/issues/8780 Fix: https://github.com/iojs/io.js/issues/1696 PR-URL: https://github.com/nodejs/io.js/pull/1702 Reviewed-By: Trevor Norris <trev.norris@gmail.com>v2.3.1-release
Fedor Indutny
10 years ago
2 changed files with 88 additions and 0 deletions
@ -0,0 +1,73 @@ |
|||||
|
'use strict'; |
||||
|
|
||||
|
var common = require('../common'); |
||||
|
|
||||
|
var assert = require('assert'); |
||||
|
var path = require('path'); |
||||
|
var fs = require('fs'); |
||||
|
var constants = require('constants'); |
||||
|
|
||||
|
if (!common.hasCrypto) { |
||||
|
console.log('1..0 # Skipped: missing crypto'); |
||||
|
process.exit(); |
||||
|
} |
||||
|
|
||||
|
var tls = require('tls'); |
||||
|
|
||||
|
var options = { |
||||
|
secureOptions: constants.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(1443, function() { |
||||
|
var clientOpts = { |
||||
|
port: 1443, |
||||
|
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); |
||||
|
} |
Loading…
Reference in new issue