mirror of https://github.com/lukechilds/node.git
Browse Source
Competing timers were causing a race condition and thus the test was flaky. Instead, we check an object property on process exit. Fixes: https://github.com/nodejs/node/issues/7650 Backport-PR-URL: https://github.com/nodejs/node/pull/12567 PR-URL: https://github.com/nodejs/node/pull/7857 Reviewed-By: Santiago Gimeno <santiago.gimeno@gmail.com> Reviewed-By: Fedor Indutny <fedor.indutny@gmail.com> Reviewed-By: jasnell - James M Snell <jasnell@gmail.com>v4.x
Rich Trott
9 years ago
committed by
Myles Borins
1 changed files with 31 additions and 19 deletions
@ -1,42 +1,54 @@ |
|||
'use strict'; |
|||
var common = require('../common'); |
|||
var assert = require('assert'); |
|||
const common = require('../common'); |
|||
|
|||
if (!common.hasCrypto) { |
|||
common.skip('missing crypto'); |
|||
return; |
|||
} |
|||
var tls = require('tls'); |
|||
const assert = require('assert'); |
|||
const tls = require('tls'); |
|||
|
|||
var net = require('net'); |
|||
var fs = require('fs'); |
|||
const net = require('net'); |
|||
const fs = require('fs'); |
|||
|
|||
var options = { |
|||
const options = { |
|||
key: fs.readFileSync(common.fixturesDir + '/keys/agent1-key.pem'), |
|||
cert: fs.readFileSync(common.fixturesDir + '/keys/agent1-cert.pem') |
|||
}; |
|||
|
|||
var server = tls.createServer(options, function(c) { |
|||
setTimeout(function() { |
|||
c.write('hello'); |
|||
setTimeout(function() { |
|||
c.destroy(); |
|||
server.close(); |
|||
}, 150); |
|||
}, 150); |
|||
}); |
|||
const server = tls.createServer(options, common.mustCall((c) => { |
|||
setImmediate(() => { |
|||
c.write('hello', () => { |
|||
setImmediate(() => { |
|||
c.destroy(); |
|||
server.close(); |
|||
}); |
|||
}); |
|||
}); |
|||
})); |
|||
|
|||
var socket; |
|||
var lastIdleStart; |
|||
|
|||
server.listen(0, function() { |
|||
var socket = net.connect(this.address().port, function() { |
|||
var s = socket.setTimeout(common.platformTimeout(240), function() { |
|||
server.listen(0, () => { |
|||
socket = net.connect(server.address().port, function() { |
|||
const s = socket.setTimeout(Number.MAX_VALUE, function() { |
|||
throw new Error('timeout'); |
|||
}); |
|||
assert.ok(s instanceof net.Socket); |
|||
|
|||
var tsocket = tls.connect({ |
|||
assert.notStrictEqual(socket._idleTimeout, -1); |
|||
lastIdleStart = socket._idleStart; |
|||
|
|||
const tsocket = tls.connect({ |
|||
socket: socket, |
|||
rejectUnauthorized: false |
|||
}); |
|||
tsocket.resume(); |
|||
}); |
|||
}); |
|||
|
|||
process.on('exit', () => { |
|||
assert.strictEqual(socket._idleTimeout, -1); |
|||
assert(lastIdleStart < socket._idleStart); |
|||
}); |
|||
|
Loading…
Reference in new issue