From 779a05d5d1bfe2eeb05386f6415d36f80ca0b3b5 Mon Sep 17 00:00:00 2001 From: Anna Henningsen Date: Fri, 12 Jul 2019 00:32:21 +0200 Subject: http: reset parser.incoming when server response is finished MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This resolves a memory leak for keep-alive connections with a naïve approach. Fixes: https://github.com/nodejs/node/issues/9668 PR-URL: https://github.com/nodejs/node/pull/28646 Reviewed-By: Benjamin Gruenbaum Reviewed-By: Rich Trott --- lib/_http_server.js | 2 ++ 1 file changed, 2 insertions(+) (limited to 'lib/_http_server.js') diff --git a/lib/_http_server.js b/lib/_http_server.js index 6a262eedc2..4a96466090 100644 --- a/lib/_http_server.js +++ b/lib/_http_server.js @@ -621,6 +621,8 @@ function resOnFinish(req, res, socket, state, server) { assert(state.incoming.length === 0 || state.incoming[0] === req); state.incoming.shift(); + // Reset the .incoming property so that the request object can be gc'ed. + if (socket.parser) socket.parser.incoming = null; // If the user never called req.read(), and didn't pipe() or // .resume() or .on('data'), then we call req._dump() so that the -- cgit v1.2.3