diff options
author | Luigi Pinca <luigipinca@gmail.com> | 2018-01-17 15:44:49 +0100 |
---|---|---|
committer | Ruben Bridgewater <ruben@bridgewater.de> | 2018-01-21 02:42:19 +0100 |
commit | 93f1d9e10bbc922d6c8862e30efaee8975712633 (patch) | |
tree | 9d6a61c52a6bf647fcc77b8598d0541ae9e91c98 /test | |
parent | 08ada72cc692163979f574ee00de81cbfd730994 (diff) | |
download | android-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.js | 33 |
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(); + })); +})); |