mirror of
https://github.com/nodejs/node.git
synced 2025-05-03 20:29:36 +00:00

As suggested in https://github.com/nodejs/node/issues/37849#issuecomment-805049586 improve the error presented when encountering a large number of invalid frames by giving this situation a specific error code (which we should have had from the beginning). PR-URL: https://github.com/nodejs/node/pull/37936 Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Yongsheng Zhang <zyszys98@gmail.com>
44 lines
1.2 KiB
JavaScript
44 lines
1.2 KiB
JavaScript
'use strict';
|
|
const common = require('../common');
|
|
if (!common.hasCrypto)
|
|
common.skip('missing crypto');
|
|
const { readSync } = require('../common/fixtures');
|
|
const net = require('net');
|
|
const http2 = require('http2');
|
|
const { once } = require('events');
|
|
|
|
async function main() {
|
|
const blobWithEmptyFrame = readSync('emptyframe.http2');
|
|
const server = net.createServer((socket) => {
|
|
socket.end(blobWithEmptyFrame);
|
|
}).listen(0);
|
|
await once(server, 'listening');
|
|
|
|
for (const maxSessionInvalidFrames of [0, 2]) {
|
|
const client = http2.connect(`http://localhost:${server.address().port}`, {
|
|
maxSessionInvalidFrames
|
|
});
|
|
const stream = client.request({
|
|
':method': 'GET',
|
|
':path': '/'
|
|
});
|
|
if (maxSessionInvalidFrames) {
|
|
stream.on('error', common.mustNotCall());
|
|
client.on('error', common.mustNotCall());
|
|
} else {
|
|
const expected = {
|
|
code: 'ERR_HTTP2_TOO_MANY_INVALID_FRAMES',
|
|
message: 'Too many invalid HTTP/2 frames'
|
|
};
|
|
stream.on('error', common.expectsError(expected));
|
|
client.on('error', common.expectsError(expected));
|
|
}
|
|
stream.resume();
|
|
await once(stream, 'end');
|
|
client.close();
|
|
}
|
|
server.close();
|
|
}
|
|
|
|
main().then(common.mustCall());
|