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;
|
req.connection = socket;
|
||||||
parser.reinitialize(HTTPParser.RESPONSE);
|
parser.reinitialize(HTTPParser.RESPONSE);
|
||||||
parser.socket = socket;
|
parser.socket = socket;
|
||||||
parser.incoming = null;
|
|
||||||
parser.outgoing = req;
|
parser.outgoing = req;
|
||||||
req.parser = parser;
|
req.parser = parser;
|
||||||
|
|
||||||
@ -619,9 +618,6 @@ function tickOnSocket(req, socket) {
|
|||||||
// Propagate headers limit from request object to parser
|
// Propagate headers limit from request object to parser
|
||||||
if (typeof req.maxHeadersCount === 'number') {
|
if (typeof req.maxHeadersCount === 'number') {
|
||||||
parser.maxHeaderPairs = req.maxHeadersCount << 1;
|
parser.maxHeaderPairs = req.maxHeadersCount << 1;
|
||||||
} else {
|
|
||||||
// Set default value because parser may be reused from FreeList
|
|
||||||
parser.maxHeaderPairs = 2000;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
parser.onIncoming = parserOnIncomingClient;
|
parser.onIncoming = parserOnIncomingClient;
|
||||||
|
@ -41,6 +41,8 @@ const kOnBody = HTTPParser.kOnBody | 0;
|
|||||||
const kOnMessageComplete = HTTPParser.kOnMessageComplete | 0;
|
const kOnMessageComplete = HTTPParser.kOnMessageComplete | 0;
|
||||||
const kOnExecute = HTTPParser.kOnExecute | 0;
|
const kOnExecute = HTTPParser.kOnExecute | 0;
|
||||||
|
|
||||||
|
const MAX_HEADER_PAIRS = 2000;
|
||||||
|
|
||||||
// Only called in the slow case where slow means
|
// Only called in the slow case where slow means
|
||||||
// that the request headers were either fragmented
|
// that the request headers were either fragmented
|
||||||
// across multiple TCP packets or too large to be
|
// across multiple TCP packets or too large to be
|
||||||
@ -159,6 +161,9 @@ const parsers = new FreeList('parsers', 1000, function() {
|
|||||||
parser.incoming = null;
|
parser.incoming = null;
|
||||||
parser.outgoing = null;
|
parser.outgoing = null;
|
||||||
|
|
||||||
|
parser.maxHeaderPairs = MAX_HEADER_PAIRS;
|
||||||
|
|
||||||
|
parser.onIncoming = null;
|
||||||
parser[kOnHeaders] = parserOnHeaders;
|
parser[kOnHeaders] = parserOnHeaders;
|
||||||
parser[kOnHeadersComplete] = parserOnHeadersComplete;
|
parser[kOnHeadersComplete] = parserOnHeadersComplete;
|
||||||
parser[kOnBody] = parserOnBody;
|
parser[kOnBody] = parserOnBody;
|
||||||
@ -180,6 +185,8 @@ function closeParserInstance(parser) { parser.close(); }
|
|||||||
function freeParser(parser, req, socket) {
|
function freeParser(parser, req, socket) {
|
||||||
if (parser) {
|
if (parser) {
|
||||||
parser._headers = [];
|
parser._headers = [];
|
||||||
|
parser._url = '';
|
||||||
|
parser.maxHeaderPairs = MAX_HEADER_PAIRS;
|
||||||
parser.onIncoming = null;
|
parser.onIncoming = null;
|
||||||
if (parser._consumed)
|
if (parser._consumed)
|
||||||
parser.unconsume();
|
parser.unconsume();
|
||||||
|
@ -342,14 +342,10 @@ function connectionListenerInternal(server, socket) {
|
|||||||
parser.reinitialize(HTTPParser.REQUEST);
|
parser.reinitialize(HTTPParser.REQUEST);
|
||||||
parser.socket = socket;
|
parser.socket = socket;
|
||||||
socket.parser = parser;
|
socket.parser = parser;
|
||||||
parser.incoming = null;
|
|
||||||
|
|
||||||
// Propagate headers limit from server instance to parser
|
// Propagate headers limit from server instance to parser
|
||||||
if (typeof server.maxHeadersCount === 'number') {
|
if (typeof server.maxHeadersCount === 'number') {
|
||||||
parser.maxHeaderPairs = server.maxHeadersCount << 1;
|
parser.maxHeaderPairs = server.maxHeadersCount << 1;
|
||||||
} else {
|
|
||||||
// Set default value because parser may be reused from FreeList
|
|
||||||
parser.maxHeaderPairs = 2000;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
var state = {
|
var state = {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user