mirror of https://github.com/nodejs/node.git
tls: nullify `.ssl` on handle close
This is an intermediate fix for an issue of accessing `TLSWrap` fields after the parent handle was destroyed. While `close` listener cleans up this field automatically, it can be done even earlier at the `TLSWrap.close` call. Proper fix is going to be submitted and landed after this one. Fix: #5108 PR-URL: https://github.com/nodejs/node/pull/5168 Reviewed-By: Shigeki Ohtsu <ohtsu@iij.ad.jp>
This commit is contained in:
parent
a06066ca31
commit
aa0526972a
|
@ -299,6 +299,9 @@ proxiedMethods.forEach(function(name) {
|
|||
});
|
||||
|
||||
tls_wrap.TLSWrap.prototype.close = function closeProxy(cb) {
|
||||
if (this.owner)
|
||||
this.owner.ssl = null;
|
||||
|
||||
if (this._parentWrap && this._parentWrap._handle === this._parent) {
|
||||
this._parentWrap.once('close', cb);
|
||||
return this._parentWrap.destroy();
|
||||
|
|
|
@ -0,0 +1,42 @@
|
|||
'use strict';
|
||||
const common = require('../common');
|
||||
|
||||
if (!common.hasCrypto) {
|
||||
console.log('1..0 # Skipped: missing crypto');
|
||||
return;
|
||||
}
|
||||
|
||||
const assert = require('assert');
|
||||
const tls = require('tls');
|
||||
const fs = require('fs');
|
||||
|
||||
const options = {
|
||||
key: fs.readFileSync(common.fixturesDir + '/keys/agent1-key.pem'),
|
||||
cert: fs.readFileSync(common.fixturesDir + '/keys/agent1-cert.pem')
|
||||
};
|
||||
|
||||
|
||||
const server = tls.createServer(options, function(s) {
|
||||
s.end('hello');
|
||||
}).listen(common.PORT, function() {
|
||||
const opts = {
|
||||
port: common.PORT,
|
||||
rejectUnauthorized: false
|
||||
};
|
||||
const client = tls.connect(opts, function() {
|
||||
putImmediate(client);
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
function putImmediate(client) {
|
||||
setImmediate(function() {
|
||||
if (client.ssl) {
|
||||
const fd = client.ssl.fd;
|
||||
assert(!!fd);
|
||||
putImmediate(client);
|
||||
} else {
|
||||
server.close();
|
||||
}
|
||||
});
|
||||
}
|
Loading…
Reference in New Issue