diff options
author | Anatoli Papirovski <apapirovski@mac.com> | 2018-04-18 10:17:06 +0200 |
---|---|---|
committer | Ruben Bridgewater <ruben@bridgewater.de> | 2018-04-23 15:59:27 +0200 |
commit | 58e0800b81f6867690d571820e73df6d3ec2ce55 (patch) | |
tree | b908a979e967b099fa81bb108f7ba3fdae162b7f /lib | |
parent | 1c84914c5a3bfc71969ca1930818d43192ae3ae8 (diff) | |
download | android-node-v8-58e0800b81f6867690d571820e73df6d3ec2ce55.tar.gz android-node-v8-58e0800b81f6867690d571820e73df6d3ec2ce55.tar.bz2 android-node-v8-58e0800b81f6867690d571820e73df6d3ec2ce55.zip |
http: cleanup parser properties
Cleanup constructor and freeParser to manage all existing parser
properties, not just some.
PR-URL: https://github.com/nodejs/node/pull/20126
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Reviewed-By: Daniel Bevenius <daniel.bevenius@gmail.com>
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Diffstat (limited to 'lib')
-rw-r--r-- | lib/_http_client.js | 4 | ||||
-rw-r--r-- | lib/_http_common.js | 7 | ||||
-rw-r--r-- | lib/_http_server.js | 4 |
3 files changed, 7 insertions, 8 deletions
diff --git a/lib/_http_client.js b/lib/_http_client.js index c3ef9de204..22ae85c927 100644 --- a/lib/_http_client.js +++ b/lib/_http_client.js @@ -606,7 +606,6 @@ function tickOnSocket(req, socket) { req.connection = socket; parser.reinitialize(HTTPParser.RESPONSE); parser.socket = socket; - parser.incoming = null; parser.outgoing = req; req.parser = parser; @@ -619,9 +618,6 @@ function tickOnSocket(req, socket) { // Propagate headers limit from request object to parser if (typeof req.maxHeadersCount === 'number') { parser.maxHeaderPairs = req.maxHeadersCount << 1; - } else { - // Set default value because parser may be reused from FreeList - parser.maxHeaderPairs = 2000; } parser.onIncoming = parserOnIncomingClient; diff --git a/lib/_http_common.js b/lib/_http_common.js index c8998f4d85..7eb37511bd 100644 --- a/lib/_http_common.js +++ b/lib/_http_common.js @@ -41,6 +41,8 @@ const kOnBody = HTTPParser.kOnBody | 0; const kOnMessageComplete = HTTPParser.kOnMessageComplete | 0; const kOnExecute = HTTPParser.kOnExecute | 0; +const MAX_HEADER_PAIRS = 2000; + // Only called in the slow case where slow means // that the request headers were either fragmented // across multiple TCP packets or too large to be @@ -159,6 +161,9 @@ const parsers = new FreeList('parsers', 1000, function() { parser.incoming = null; parser.outgoing = null; + parser.maxHeaderPairs = MAX_HEADER_PAIRS; + + parser.onIncoming = null; parser[kOnHeaders] = parserOnHeaders; parser[kOnHeadersComplete] = parserOnHeadersComplete; parser[kOnBody] = parserOnBody; @@ -180,6 +185,8 @@ function closeParserInstance(parser) { parser.close(); } function freeParser(parser, req, socket) { if (parser) { parser._headers = []; + parser._url = ''; + parser.maxHeaderPairs = MAX_HEADER_PAIRS; parser.onIncoming = null; if (parser._consumed) parser.unconsume(); diff --git a/lib/_http_server.js b/lib/_http_server.js index c3abfd37bb..1d6cada327 100644 --- a/lib/_http_server.js +++ b/lib/_http_server.js @@ -342,14 +342,10 @@ function connectionListenerInternal(server, socket) { parser.reinitialize(HTTPParser.REQUEST); parser.socket = socket; socket.parser = parser; - parser.incoming = null; // Propagate headers limit from server instance to parser if (typeof server.maxHeadersCount === 'number') { parser.maxHeaderPairs = server.maxHeadersCount << 1; - } else { - // Set default value because parser may be reused from FreeList - parser.maxHeaderPairs = 2000; } var state = { |