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:
Anatoli Papirovski 2018-04-18 09:26:16 +02:00 committed by Ruben Bridgewater
parent 1d1ab76e17
commit 2e31d5db73
No known key found for this signature in database
GPG Key ID: F07496B3EB3C1762

View File

@ -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 = '';