Skip to content

Commit 9b03af2

Browse files
Tom Atkinsonrvagg
Tom Atkinson
authored andcommitted
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: #4773 Reviewed-By: Ben Noordhuis <[email protected]> Reviewed-By: Brian White <[email protected]> Reviewed-By: Fedor Indutny <[email protected]>
1 parent 2119c76 commit 9b03af2

File tree

1 file changed

+3
-0
lines changed

1 file changed

+3
-0
lines changed

lib/_http_common.js

+3
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ const kOnHeaders = HTTPParser.kOnHeaders | 0;
2020
const kOnHeadersComplete = HTTPParser.kOnHeadersComplete | 0;
2121
const kOnBody = HTTPParser.kOnBody | 0;
2222
const kOnMessageComplete = HTTPParser.kOnMessageComplete | 0;
23+
const kOnExecute = HTTPParser.kOnExecute | 0;
2324

2425
// Only called in the slow case where slow means
2526
// that the request headers were either fragmented
@@ -151,6 +152,7 @@ var parsers = new FreeList('parsers', 1000, function() {
151152
parser[kOnHeadersComplete] = parserOnHeadersComplete;
152153
parser[kOnBody] = parserOnBody;
153154
parser[kOnMessageComplete] = parserOnMessageComplete;
155+
parser[kOnExecute] = null;
154156

155157
return parser;
156158
});
@@ -175,6 +177,7 @@ function freeParser(parser, req, socket) {
175177
parser.socket.parser = null;
176178
parser.socket = null;
177179
parser.incoming = null;
180+
parser[kOnExecute] = null;
178181
if (parsers.free(parser) === false)
179182
parser.close();
180183
parser = null;

0 commit comments

Comments
 (0)