Browse Source

http: remove reference to onParserExecute

Parsers hold a reference to the socket associated with the request
through onParserExecute. This must be removed when the parser is
freed so that the socket can be garbage collected when destroyed.

Regression introduced in commit 59b91f1 ("http_parser: consume
StreamBase instance").

PR-URL: https://github.com/nodejs/node/pull/4773
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Brian White <mscdex@mscdex.net>
Reviewed-By: Fedor Indutny <fedor.indutny@gmail.com>
v5.x
Tom Atkinson 9 years ago
committed by Rod Vagg
parent
commit
9b03af254a
  1. 3
      lib/_http_common.js

3
lib/_http_common.js

@ -20,6 +20,7 @@ const kOnHeaders = HTTPParser.kOnHeaders | 0;
const kOnHeadersComplete = HTTPParser.kOnHeadersComplete | 0;
const kOnBody = HTTPParser.kOnBody | 0;
const kOnMessageComplete = HTTPParser.kOnMessageComplete | 0;
const kOnExecute = HTTPParser.kOnExecute | 0;
// Only called in the slow case where slow means
// that the request headers were either fragmented
@ -151,6 +152,7 @@ var parsers = new FreeList('parsers', 1000, function() {
parser[kOnHeadersComplete] = parserOnHeadersComplete;
parser[kOnBody] = parserOnBody;
parser[kOnMessageComplete] = parserOnMessageComplete;
parser[kOnExecute] = null;
return parser;
});
@ -175,6 +177,7 @@ function freeParser(parser, req, socket) {
parser.socket.parser = null;
parser.socket = null;
parser.incoming = null;
parser[kOnExecute] = null;
if (parsers.free(parser) === false)
parser.close();
parser = null;

Loading…
Cancel
Save