mirror of
https://github.com/nodejs/node.git
synced 2025-08-16 06:08:50 +02:00
http: fix error return in Finish()
`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. Fix: #24585 PR-URL: https://github.com/nodejs/node/pull/24738 Reviewed-By: Luigi Pinca <luigipinca@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com>
This commit is contained in:
parent
3fb627bead
commit
175164e5d1
2 changed files with 55 additions and 4 deletions
27
test/parallel/test-http-parser-finish-error.js
Normal file
27
test/parallel/test-http-parser-finish-error.js
Normal file
|
@ -0,0 +1,27 @@
|
|||
'use strict';
|
||||
|
||||
const common = require('../common');
|
||||
const net = require('net');
|
||||
const http = require('http');
|
||||
const assert = require('assert');
|
||||
|
||||
const str = 'GET / HTTP/1.1\r\n' +
|
||||
'Content-Length:';
|
||||
|
||||
|
||||
const server = http.createServer(common.mustNotCall());
|
||||
server.on('clientError', common.mustCall((err, socket) => {
|
||||
assert(/^Parse Error/.test(err.message));
|
||||
assert.strictEqual(err.code, 'HPE_INVALID_EOF_STATE');
|
||||
socket.destroy();
|
||||
}, 1));
|
||||
server.listen(0, () => {
|
||||
const client = net.connect({ port: server.address().port }, () => {
|
||||
client.on('data', common.mustNotCall());
|
||||
client.on('end', common.mustCall(() => {
|
||||
server.close();
|
||||
}));
|
||||
client.write(str);
|
||||
client.end();
|
||||
});
|
||||
});
|
Loading…
Add table
Add a link
Reference in a new issue