node/test/parallel/test-http-max-header-size.js
Brian White ac9b8f7645
http: fix error check in Execute()
`http_parser_execute(..., nullptr, 0)` returns either `0` or `1`. The
expectation is that no error must be returned if it is `0`, and if
it is `1` - a `Error` object must be returned back to user.

The introduction of `llhttp` and the refactor that happened during it
accidentally removed the error-returning code. This commit reverts it
back to its original state.

Backport-PR-URL: https://github.com/nodejs/node/pull/25938
Fix: #24585
PR-URL: #24738
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
2019-03-20 17:16:10 +00:00

25 lines
790 B
JavaScript

'use strict';
const common = require('../common');
const assert = require('assert');
const { spawnSync } = require('child_process');
const http = require('http');
assert.strictEqual(http.maxHeaderSize, 8 * 1024);
const child = spawnSync(process.execPath, ['--max-http-header-size=10', '-p',
'http.maxHeaderSize']);
assert.strictEqual(+child.stdout.toString().trim(), 10);
{
const server = http.createServer(common.mustNotCall());
server.listen(0, common.mustCall(() => {
http.get({
port: server.address().port,
headers: { foo: 'x'.repeat(http.maxHeaderSize + 1) }
}, common.mustNotCall()).once('error', common.mustCall((err) => {
assert.strictEqual(err.code, 'ECONNRESET');
server.close();
}));
}));
}