From c9c7256f5060d9de58e6db534095fcfa10922d14 Mon Sep 17 00:00:00 2001 From: Anna Henningsen Date: Fri, 12 Jul 2019 00:32:21 +0200 Subject: [PATCH] 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(+) diff --git a/lib/_http_server.js b/lib/_http_server.js index b44330941d79b6..a23943970dfa4d 100644 --- a/lib/_http_server.js +++ b/lib/_http_server.js @@ -623,6 +623,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