summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorAnatoli Papirovski <apapirovski@mac.com>2018-04-18 10:17:06 +0200
committerRuben Bridgewater <ruben@bridgewater.de>2018-04-23 15:59:27 +0200
commit58e0800b81f6867690d571820e73df6d3ec2ce55 (patch)
treeb908a979e967b099fa81bb108f7ba3fdae162b7f /lib
parent1c84914c5a3bfc71969ca1930818d43192ae3ae8 (diff)
downloadandroid-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.js4
-rw-r--r--lib/_http_common.js7
-rw-r--r--lib/_http_server.js4
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 = {