mirror of
https://github.com/nodejs/node.git
synced 2024-11-21 10:59:27 +00:00
5374e15d24
Don't destroy the socket when closing the session but let it end gracefully. Also, when destroying the session, on Windows, we would get ECONNRESET errors, make sure we take those into account in our tests. PR-URL: https://github.com/nodejs/node/pull/45115 Reviewed-By: Matteo Collina <matteo.collina@gmail.com> Reviewed-By: Rafael Gonzaga <rafael.nunu@hotmail.com> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
53 lines
1.6 KiB
JavaScript
53 lines
1.6 KiB
JavaScript
'use strict';
|
|
|
|
// Tests that attempting to send too many non-acknowledged
|
|
// settings frames will result in an error
|
|
|
|
const common = require('../common');
|
|
if (!common.hasCrypto)
|
|
common.skip('missing crypto');
|
|
const assert = require('assert');
|
|
const h2 = require('http2');
|
|
|
|
const maxOutstandingSettings = 2;
|
|
|
|
function doTest(session) {
|
|
session.on('error', common.expectsError({
|
|
code: 'ERR_HTTP2_MAX_PENDING_SETTINGS_ACK',
|
|
name: 'Error'
|
|
}));
|
|
for (let n = 0; n < maxOutstandingSettings; n++) {
|
|
session.settings({ enablePush: false });
|
|
assert.strictEqual(session.pendingSettingsAck, true);
|
|
}
|
|
}
|
|
|
|
{
|
|
const server = h2.createServer({ maxOutstandingSettings });
|
|
server.on('stream', common.mustNotCall());
|
|
server.once('session', common.mustCall((session) => doTest(session)));
|
|
|
|
server.listen(0, common.mustCall(() => {
|
|
const client = h2.connect(`http://localhost:${server.address().port}`);
|
|
client.on('error', common.mustCall((err) => {
|
|
if (err.code !== 'ECONNRESET') {
|
|
assert.strictEqual(err.code, 'ERR_HTTP2_SESSION_ERROR');
|
|
assert.strictEqual(err.message, 'Session closed with error code 2');
|
|
}
|
|
}));
|
|
client.on('close', common.mustCall(() => server.close()));
|
|
}));
|
|
}
|
|
|
|
{
|
|
const server = h2.createServer();
|
|
server.on('stream', common.mustNotCall());
|
|
|
|
server.listen(0, common.mustCall(() => {
|
|
const client = h2.connect(`http://localhost:${server.address().port}`,
|
|
{ maxOutstandingSettings });
|
|
client.on('connect', () => doTest(client));
|
|
client.on('close', () => server.close());
|
|
}));
|
|
}
|