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>
This commit is contained in:
Anatoli Papirovski 2018-04-18 10:17:06 +02:00 committed by Ruben Bridgewater
parent 1c84914c5a
commit 58e0800b81
No known key found for this signature in database
GPG Key ID: F07496B3EB3C1762
3 changed files with 7 additions and 8 deletions

View File

@ -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;

View File

@ -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();

View File

@ -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 = {