mirror of
https://github.com/nodejs/node.git
synced 2024-11-21 21:19:50 +01:00
6326ced2de
Lots of changes, but mostly just search/replace of fixtures.readSync(...) to fixtures.readKey([new key]...) Benchmarks modified to use fixtures.readKey(...): benchmark/tls/throughput.js benchmark/tls/tls-connect.js benchmark/tls/secure-pair.js Also be sure to review the change to L16 of test/parallel/test-crypto-sign-verify.js PR-URL: https://github.com/nodejs/node/pull/27962 Reviewed-By: Sam Roberts <vieuxtech@gmail.com> Reviewed-By: Ujjwal Sharma <usharma1998@gmail.com> Reviewed-By: Rich Trott <rtrott@gmail.com>
58 lines
1.7 KiB
JavaScript
58 lines
1.7 KiB
JavaScript
'use strict';
|
|
|
|
// Verify that exceptions from a callback don't result in
|
|
// failed CHECKs when trying to print the exception message.
|
|
|
|
// This test is convoluted because it needs to trigger a callback
|
|
// into JS land at just the right time when an exception is pending,
|
|
// and does so by exploiting a weakness in the streams infrastructure.
|
|
// I won't shed any tears if this test ever becomes invalidated.
|
|
|
|
const common = require('../common');
|
|
|
|
if (!common.hasCrypto)
|
|
common.skip('missing crypto');
|
|
|
|
if (process.argv[2] === 'child') {
|
|
const fixtures = require('../common/fixtures');
|
|
const https = require('https');
|
|
const net = require('net');
|
|
const tls = require('tls');
|
|
const { Duplex } = require('stream');
|
|
const { mustCall } = common;
|
|
|
|
const cert = fixtures.readKey('rsa_cert.crt');
|
|
const key = fixtures.readKey('rsa_private.pem');
|
|
|
|
net.createServer(mustCall(onplaintext)).listen(0, mustCall(onlisten));
|
|
|
|
function onlisten() {
|
|
const { port } = this.address();
|
|
https.get({ port, rejectUnauthorized: false });
|
|
}
|
|
|
|
function onplaintext(c) {
|
|
const d = new class extends Duplex {
|
|
_read(n) {
|
|
const data = c.read(n);
|
|
if (data) d.push(data);
|
|
}
|
|
_write(...xs) {
|
|
c.write(...xs);
|
|
}
|
|
}();
|
|
c.on('data', d.push.bind(d));
|
|
|
|
const options = { key, cert };
|
|
const fail = () => { throw new Error('eyecatcher'); };
|
|
tls.createServer(options, mustCall(fail)).emit('connection', d);
|
|
}
|
|
} else {
|
|
const assert = require('assert');
|
|
const { spawnSync } = require('child_process');
|
|
const result = spawnSync(process.execPath, [__filename, 'child']);
|
|
const stderr = result.stderr.toString();
|
|
const ok = stderr.includes('Error: eyecatcher');
|
|
assert(ok, stderr);
|
|
}
|