http: cleanup _http_common.js
Remove constant deep property access by storing a reference, use more const, make some conditionals stricter. 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
1d1ab76e17
commit
2e31d5db73
@ -65,12 +65,12 @@ function parserOnHeadersComplete(versionMajor, versionMinor, headers, method,
|
|||||||
const parser = this;
|
const parser = this;
|
||||||
const { socket } = parser;
|
const { socket } = parser;
|
||||||
|
|
||||||
if (!headers) {
|
if (headers === undefined) {
|
||||||
headers = parser._headers;
|
headers = parser._headers;
|
||||||
parser._headers = [];
|
parser._headers = [];
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!url) {
|
if (url === undefined) {
|
||||||
url = parser._url;
|
url = parser._url;
|
||||||
parser._url = '';
|
parser._url = '';
|
||||||
}
|
}
|
||||||
@ -80,12 +80,12 @@ function parserOnHeadersComplete(versionMajor, versionMinor, headers, method,
|
|||||||
socket.server[kIncomingMessage]) ||
|
socket.server[kIncomingMessage]) ||
|
||||||
IncomingMessage;
|
IncomingMessage;
|
||||||
|
|
||||||
parser.incoming = new ParserIncomingMessage(socket);
|
const incoming = parser.incoming = new ParserIncomingMessage(socket);
|
||||||
parser.incoming.httpVersionMajor = versionMajor;
|
incoming.httpVersionMajor = versionMajor;
|
||||||
parser.incoming.httpVersionMinor = versionMinor;
|
incoming.httpVersionMinor = versionMinor;
|
||||||
parser.incoming.httpVersion = `${versionMajor}.${versionMinor}`;
|
incoming.httpVersion = `${versionMajor}.${versionMinor}`;
|
||||||
parser.incoming.url = url;
|
incoming.url = url;
|
||||||
parser.incoming.upgrade = upgrade;
|
incoming.upgrade = upgrade;
|
||||||
|
|
||||||
var n = headers.length;
|
var n = headers.length;
|
||||||
|
|
||||||
@ -93,51 +93,48 @@ function parserOnHeadersComplete(versionMajor, versionMinor, headers, method,
|
|||||||
if (parser.maxHeaderPairs > 0)
|
if (parser.maxHeaderPairs > 0)
|
||||||
n = Math.min(n, parser.maxHeaderPairs);
|
n = Math.min(n, parser.maxHeaderPairs);
|
||||||
|
|
||||||
parser.incoming._addHeaderLines(headers, n);
|
incoming._addHeaderLines(headers, n);
|
||||||
|
|
||||||
if (typeof method === 'number') {
|
if (typeof method === 'number') {
|
||||||
// server only
|
// server only
|
||||||
parser.incoming.method = methods[method];
|
incoming.method = methods[method];
|
||||||
} else {
|
} else {
|
||||||
// client only
|
// client only
|
||||||
parser.incoming.statusCode = statusCode;
|
incoming.statusCode = statusCode;
|
||||||
parser.incoming.statusMessage = statusMessage;
|
incoming.statusMessage = statusMessage;
|
||||||
}
|
}
|
||||||
|
|
||||||
return parser.onIncoming(parser.incoming, shouldKeepAlive);
|
return parser.onIncoming(incoming, shouldKeepAlive);
|
||||||
}
|
}
|
||||||
|
|
||||||
// XXX This is a mess.
|
// XXX This is a mess.
|
||||||
// TODO: http.Parser should be a Writable emits request/response events.
|
// TODO: http.Parser should be a Writable emits request/response events.
|
||||||
function parserOnBody(b, start, len) {
|
function parserOnBody(b, start, len) {
|
||||||
var parser = this;
|
const stream = this.incoming;
|
||||||
var stream = parser.incoming;
|
|
||||||
|
|
||||||
// if the stream has already been removed, then drop it.
|
// if the stream has already been removed, then drop it.
|
||||||
if (!stream)
|
if (stream === null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
var socket = stream.socket;
|
|
||||||
|
|
||||||
// pretend this was the result of a stream._read call.
|
// pretend this was the result of a stream._read call.
|
||||||
if (len > 0 && !stream._dumped) {
|
if (len > 0 && !stream._dumped) {
|
||||||
var slice = b.slice(start, start + len);
|
var slice = b.slice(start, start + len);
|
||||||
var ret = stream.push(slice);
|
var ret = stream.push(slice);
|
||||||
if (!ret)
|
if (!ret)
|
||||||
readStop(socket);
|
readStop(this.socket);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function parserOnMessageComplete() {
|
function parserOnMessageComplete() {
|
||||||
var parser = this;
|
const parser = this;
|
||||||
var stream = parser.incoming;
|
const stream = parser.incoming;
|
||||||
|
|
||||||
if (stream) {
|
if (stream !== null) {
|
||||||
stream.complete = true;
|
stream.complete = true;
|
||||||
// Emit any trailing headers.
|
// Emit any trailing headers.
|
||||||
var headers = parser._headers;
|
const headers = parser._headers;
|
||||||
if (headers) {
|
if (headers.length) {
|
||||||
parser.incoming._addHeaderLines(headers, headers.length);
|
stream._addHeaderLines(headers, headers.length);
|
||||||
parser._headers = [];
|
parser._headers = [];
|
||||||
parser._url = '';
|
parser._url = '';
|
||||||
}
|
}
|
||||||
@ -151,8 +148,8 @@ function parserOnMessageComplete() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
var parsers = new FreeList('parsers', 1000, function() {
|
const parsers = new FreeList('parsers', 1000, function() {
|
||||||
var parser = new HTTPParser(HTTPParser.REQUEST);
|
const parser = new HTTPParser(HTTPParser.REQUEST);
|
||||||
|
|
||||||
parser._headers = [];
|
parser._headers = [];
|
||||||
parser._url = '';
|
parser._url = '';
|
||||||
|
Loading…
x
Reference in New Issue
Block a user