http: check statusCode early
By enforcing the statusCode to be an SMI, it helps a bit performance-wise when looking up the associated statusMessage. PR-URL: https://github.com/nodejs/node/pull/10558 Reviewed-By: Matteo Collina <matteo.collina@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Evan Lucas <evanlucas@me.com>
This commit is contained in:
parent
f53a6fb48b
commit
ec8910bcea
@ -162,6 +162,9 @@ ServerResponse.prototype._implicitHeader = function _implicitHeader() {
|
||||
ServerResponse.prototype.writeHead = writeHead;
|
||||
function writeHead(statusCode, reason, obj) {
|
||||
var headers;
|
||||
statusCode |= 0;
|
||||
if (statusCode < 100 || statusCode > 999)
|
||||
throw new RangeError(`Invalid status code: ${statusCode}`);
|
||||
|
||||
if (typeof reason === 'string') {
|
||||
// writeHead(statusCode, reasonPhrase[, headers])
|
||||
@ -190,17 +193,13 @@ function writeHead(statusCode, reason, obj) {
|
||||
headers = obj;
|
||||
}
|
||||
|
||||
statusCode |= 0;
|
||||
if (statusCode < 100 || statusCode > 999)
|
||||
throw new RangeError(`Invalid status code: ${statusCode}`);
|
||||
|
||||
if (common._checkInvalidHeaderChar(this.statusMessage))
|
||||
throw new Error('Invalid character in statusMessage.');
|
||||
|
||||
var statusLine = 'HTTP/1.1 ' + statusCode + ' ' + this.statusMessage + CRLF;
|
||||
|
||||
if (statusCode === 204 || statusCode === 304 ||
|
||||
(100 <= statusCode && statusCode <= 199)) {
|
||||
(statusCode >= 100 && statusCode <= 199)) {
|
||||
// RFC 2616, 10.2.5:
|
||||
// The 204 response MUST NOT include a message-body, and thus is always
|
||||
// terminated by the first empty line after the header fields.
|
||||
|
Loading…
x
Reference in New Issue
Block a user