diff options
author | Anna Henningsen <anna@addaleax.net> | 2019-07-12 00:32:21 +0200 |
---|---|---|
committer | Anna Henningsen <anna@addaleax.net> | 2019-07-28 22:14:55 +0200 |
commit | 779a05d5d1bfe2eeb05386f6415d36f80ca0b3b5 (patch) | |
tree | 4b216f8b85fec2427b2f63e59727d1c90162eadf /lib/_http_server.js | |
parent | 35cb9558658e587d98b6d83bfd2b1642ba2cc8c2 (diff) | |
download | android-node-v8-779a05d5d1bfe2eeb05386f6415d36f80ca0b3b5.tar.gz android-node-v8-779a05d5d1bfe2eeb05386f6415d36f80ca0b3b5.tar.bz2 android-node-v8-779a05d5d1bfe2eeb05386f6415d36f80ca0b3b5.zip |
http: reset parser.incoming when server response is finished
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 <benjamingr@gmail.com>
Reviewed-By: Rich Trott <rtrott@gmail.com>
Diffstat (limited to 'lib/_http_server.js')
-rw-r--r-- | lib/_http_server.js | 2 |
1 files changed, 2 insertions, 0 deletions
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 |