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:
parent
1c84914c5a
commit
58e0800b81
@ -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;
|
||||
|
@ -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();
|
||||
|
@ -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 = {
|
||||
|
Loading…
x
Reference in New Issue
Block a user