|
|
@ -1,5 +1,5 @@ |
|
|
|
'use strict'; |
|
|
|
var common = require('../common'); |
|
|
|
const common = require('../common'); |
|
|
|
|
|
|
|
if (!common.opensslCli) { |
|
|
|
common.skip('node compiled without OpenSSL CLI.'); |
|
|
@ -18,17 +18,17 @@ doTest({ tickets: false }, function() { |
|
|
|
}); |
|
|
|
|
|
|
|
function doTest(testOptions, callback) { |
|
|
|
var assert = require('assert'); |
|
|
|
var tls = require('tls'); |
|
|
|
var fs = require('fs'); |
|
|
|
var join = require('path').join; |
|
|
|
var spawn = require('child_process').spawn; |
|
|
|
const assert = require('assert'); |
|
|
|
const tls = require('tls'); |
|
|
|
const fs = require('fs'); |
|
|
|
const join = require('path').join; |
|
|
|
const spawn = require('child_process').spawn; |
|
|
|
|
|
|
|
var keyFile = join(common.fixturesDir, 'agent.key'); |
|
|
|
var certFile = join(common.fixturesDir, 'agent.crt'); |
|
|
|
var key = fs.readFileSync(keyFile); |
|
|
|
var cert = fs.readFileSync(certFile); |
|
|
|
var options = { |
|
|
|
const keyFile = join(common.fixturesDir, 'agent.key'); |
|
|
|
const certFile = join(common.fixturesDir, 'agent.crt'); |
|
|
|
const key = fs.readFileSync(keyFile); |
|
|
|
const cert = fs.readFileSync(certFile); |
|
|
|
const options = { |
|
|
|
key: key, |
|
|
|
cert: cert, |
|
|
|
ca: [cert], |
|
|
@ -38,7 +38,7 @@ function doTest(testOptions, callback) { |
|
|
|
var resumeCount = 0; |
|
|
|
var session; |
|
|
|
|
|
|
|
var server = tls.createServer(options, function(cleartext) { |
|
|
|
const server = tls.createServer(options, function(cleartext) { |
|
|
|
cleartext.on('error', function(er) { |
|
|
|
// We're ok with getting ECONNRESET in this test, but it's
|
|
|
|
// timing-dependent, and thus unreliable. Any other errors
|
|
|
@ -72,7 +72,7 @@ function doTest(testOptions, callback) { |
|
|
|
}); |
|
|
|
|
|
|
|
server.listen(0, function() { |
|
|
|
var args = [ |
|
|
|
const args = [ |
|
|
|
's_client', |
|
|
|
'-tls1', |
|
|
|
'-connect', `localhost:${this.address().port}`, |
|
|
@ -86,21 +86,35 @@ function doTest(testOptions, callback) { |
|
|
|
if (common.isWindows) |
|
|
|
args.push('-no_rand_screen'); |
|
|
|
|
|
|
|
var client = spawn(common.opensslCli, args, { |
|
|
|
stdio: [ 0, 1, 'pipe' ] |
|
|
|
}); |
|
|
|
var err = ''; |
|
|
|
client.stderr.setEncoding('utf8'); |
|
|
|
client.stderr.on('data', function(chunk) { |
|
|
|
err += chunk; |
|
|
|
}); |
|
|
|
client.on('exit', function(code) { |
|
|
|
console.error('done'); |
|
|
|
assert.equal(code, 0); |
|
|
|
server.close(function() { |
|
|
|
setTimeout(callback, 100); |
|
|
|
function spawnClient() { |
|
|
|
const client = spawn(common.opensslCli, args, { |
|
|
|
stdio: [ 0, 1, 'pipe' ] |
|
|
|
}); |
|
|
|
}); |
|
|
|
var err = ''; |
|
|
|
client.stderr.setEncoding('utf8'); |
|
|
|
client.stderr.on('data', function(chunk) { |
|
|
|
err += chunk; |
|
|
|
}); |
|
|
|
|
|
|
|
client.on('exit', common.mustCall(function(code, signal) { |
|
|
|
if (code !== 0) { |
|
|
|
// If SmartOS and connection refused, then retry. See
|
|
|
|
// https://github.com/nodejs/node/issues/2663.
|
|
|
|
if (common.isSunOS && err.includes('Connection refused')) { |
|
|
|
requestCount = 0; |
|
|
|
spawnClient(); |
|
|
|
return; |
|
|
|
} |
|
|
|
common.fail(`code: ${code}, signal: ${signal}, output: ${err}`); |
|
|
|
} |
|
|
|
assert.equal(code, 0); |
|
|
|
server.close(common.mustCall(function() { |
|
|
|
setTimeout(callback, 100); |
|
|
|
})); |
|
|
|
})); |
|
|
|
} |
|
|
|
|
|
|
|
spawnClient(); |
|
|
|
}); |
|
|
|
|
|
|
|
process.on('exit', function() { |
|
|
|