summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorLuigi Pinca <luigipinca@gmail.com>2018-01-17 15:44:49 +0100
committerRuben Bridgewater <ruben@bridgewater.de>2018-01-21 02:42:19 +0100
commit93f1d9e10bbc922d6c8862e30efaee8975712633 (patch)
tree9d6a61c52a6bf647fcc77b8598d0541ae9e91c98 /test
parent08ada72cc692163979f574ee00de81cbfd730994 (diff)
downloadandroid-node-v8-93f1d9e10bbc922d6c8862e30efaee8975712633.tar.gz
android-node-v8-93f1d9e10bbc922d6c8862e30efaee8975712633.tar.bz2
android-node-v8-93f1d9e10bbc922d6c8862e30efaee8975712633.zip
http: free the parser before emitting 'upgrade'
Ensure that the parser is freed before emitting the 'connect' or 'upgrade' event. PR-URL: https://github.com/nodejs/node/pull/18209 Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Anna Henningsen <anna@addaleax.net> Reviewed-By: Jon Moss <me@jonathanmoss.me> Reviewed-By: Fedor Indutny <fedor.indutny@gmail.com> Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de>
Diffstat (limited to 'test')
-rw-r--r--test/parallel/test-http-parser-freed-before-upgrade.js33
1 files changed, 33 insertions, 0 deletions
diff --git a/test/parallel/test-http-parser-freed-before-upgrade.js b/test/parallel/test-http-parser-freed-before-upgrade.js
new file mode 100644
index 0000000000..4ba1de9501
--- /dev/null
+++ b/test/parallel/test-http-parser-freed-before-upgrade.js
@@ -0,0 +1,33 @@
+'use strict';
+
+const common = require('../common');
+const assert = require('assert');
+const http = require('http');
+
+const server = http.createServer();
+
+server.on('upgrade', common.mustCall((request, socket) => {
+ assert.strictEqual(socket.parser, null);
+ socket.write([
+ 'HTTP/1.1 101 Switching Protocols',
+ 'Connection: Upgrade',
+ 'Upgrade: WebSocket',
+ '\r\n'
+ ].join('\r\n'));
+}));
+
+server.listen(common.mustCall(() => {
+ const request = http.get({
+ port: server.address().port,
+ headers: {
+ Connection: 'Upgrade',
+ Upgrade: 'WebSocket'
+ }
+ });
+
+ request.on('upgrade', common.mustCall((response, socket) => {
+ assert.strictEqual(socket.parser, null);
+ socket.destroy();
+ server.close();
+ }));
+}));