summaryrefslogtreecommitdiff
path: root/test/parallel/test-http-parser-finish-error.js
diff options
context:
space:
mode:
authorFedor Indutny <fedor@indutny.com>2018-11-29 22:01:33 -0500
committerFedor Indutny <fedor@indutny.com>2018-12-02 12:51:32 -0500
commit175164e5d12829b46f91137a01dac72f236a37be (patch)
tree1751ba025ea989ea4260c4cf18f684729260b2b0 /test/parallel/test-http-parser-finish-error.js
parent3fb627bead14e68d989b0f141226c1703fa062ca (diff)
downloadandroid-node-v8-175164e5d12829b46f91137a01dac72f236a37be.tar.gz
android-node-v8-175164e5d12829b46f91137a01dac72f236a37be.tar.bz2
android-node-v8-175164e5d12829b46f91137a01dac72f236a37be.zip
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>
Diffstat (limited to 'test/parallel/test-http-parser-finish-error.js')
-rw-r--r--test/parallel/test-http-parser-finish-error.js27
1 files changed, 27 insertions, 0 deletions
diff --git a/test/parallel/test-http-parser-finish-error.js b/test/parallel/test-http-parser-finish-error.js
new file mode 100644
index 0000000000..6d47a762dc
--- /dev/null
+++ b/test/parallel/test-http-parser-finish-error.js
@@ -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();
+ });
+});