Skip to content

Commit cda94b2

Browse files
apapirovskijasnell
authored andcommitted
http: cleanup parser properties
Cleanup constructor and freeParser to manage all existing parser properties, not just some. PR-URL: #20126 Reviewed-By: Luigi Pinca <luigipinca@gmail.com> Reviewed-By: Daniel Bevenius <daniel.bevenius@gmail.com> Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
1 parent ea60148 commit cda94b2

File tree

3 files changed

+7
-8
lines changed

3 files changed

+7
-8
lines changed

lib/_http_client.js

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -606,7 +606,6 @@ function tickOnSocket(req, socket) {
606606
req.connection = socket;
607607
parser.reinitialize(HTTPParser.RESPONSE);
608608
parser.socket = socket;
609-
parser.incoming = null;
610609
parser.outgoing = req;
611610
req.parser = parser;
612611

@@ -619,9 +618,6 @@ function tickOnSocket(req, socket) {
619618
// Propagate headers limit from request object to parser
620619
if (typeof req.maxHeadersCount === 'number') {
621620
parser.maxHeaderPairs = req.maxHeadersCount << 1;
622-
} else {
623-
// Set default value because parser may be reused from FreeList
624-
parser.maxHeaderPairs = 2000;
625621
}
626622

627623
parser.onIncoming = parserOnIncomingClient;

lib/_http_common.js

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,8 @@ const kOnBody = HTTPParser.kOnBody | 0;
4141
const kOnMessageComplete = HTTPParser.kOnMessageComplete | 0;
4242
const kOnExecute = HTTPParser.kOnExecute | 0;
4343

44+
const MAX_HEADER_PAIRS = 2000;
45+
4446
// Only called in the slow case where slow means
4547
// that the request headers were either fragmented
4648
// across multiple TCP packets or too large to be
@@ -159,6 +161,9 @@ const parsers = new FreeList('parsers', 1000, function() {
159161
parser.incoming = null;
160162
parser.outgoing = null;
161163

164+
parser.maxHeaderPairs = MAX_HEADER_PAIRS;
165+
166+
parser.onIncoming = null;
162167
parser[kOnHeaders] = parserOnHeaders;
163168
parser[kOnHeadersComplete] = parserOnHeadersComplete;
164169
parser[kOnBody] = parserOnBody;
@@ -180,6 +185,8 @@ function closeParserInstance(parser) { parser.close(); }
180185
function freeParser(parser, req, socket) {
181186
if (parser) {
182187
parser._headers = [];
188+
parser._url = '';
189+
parser.maxHeaderPairs = MAX_HEADER_PAIRS;
183190
parser.onIncoming = null;
184191
if (parser._consumed)
185192
parser.unconsume();

lib/_http_server.js

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -342,14 +342,10 @@ function connectionListenerInternal(server, socket) {
342342
parser.reinitialize(HTTPParser.REQUEST);
343343
parser.socket = socket;
344344
socket.parser = parser;
345-
parser.incoming = null;
346345

347346
// Propagate headers limit from server instance to parser
348347
if (typeof server.maxHeadersCount === 'number') {
349348
parser.maxHeaderPairs = server.maxHeadersCount << 1;
350-
} else {
351-
// Set default value because parser may be reused from FreeList
352-
parser.maxHeaderPairs = 2000;
353349
}
354350

355351
var state = {

0 commit comments

Comments
 (0)