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