node/test/parallel/test-http-parser-finish-error.js
Fedor Indutny 175164e5d1 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>
2018-12-02 12:51:32 -05:00

28 lines
725 B
JavaScript

'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();
});
});