Skip to content

Commit

Permalink
http: cleanup parser properties
Browse files Browse the repository at this point in the history
Cleanup constructor and freeParser to manage all existing parser
properties, not just some.

PR-URL: nodejs#20126
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Reviewed-By: Daniel Bevenius <daniel.bevenius@gmail.com>
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
  • Loading branch information
apapirovski authored and BridgeAR committed Apr 23, 2018
1 parent 1c84914 commit 58e0800
Show file tree
Hide file tree
Showing 3 changed files with 7 additions and 8 deletions.
4 changes: 0 additions & 4 deletions lib/_http_client.js
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand All @@ -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;
Expand Down
7 changes: 7 additions & 0 deletions lib/_http_common.js
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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;
Expand All @@ -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();
Expand Down
4 changes: 0 additions & 4 deletions lib/_http_server.js
Original file line number Diff line number Diff line change
Expand Up @@ -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 = {
Expand Down

0 comments on commit 58e0800

Please sign in to comment.