http: include provided status code in range error
ServerResponse#writeHead() coerces the user provided status code to a number and then performs a range check. If the check fails, a range error is thrown. The coerced status code is included in the error message. This commit uses the user provided status code instead. PR-URL: https://github.com/nodejs/node/pull/11221 Reviewed-By: James M Snell <jasnell@gmail.com>
This commit is contained in:
parent
c239581e64
commit
a4bb9fdb89
@ -161,9 +161,11 @@ ServerResponse.prototype._implicitHeader = function _implicitHeader() {
|
|||||||
|
|
||||||
ServerResponse.prototype.writeHead = writeHead;
|
ServerResponse.prototype.writeHead = writeHead;
|
||||||
function writeHead(statusCode, reason, obj) {
|
function writeHead(statusCode, reason, obj) {
|
||||||
|
var originalStatusCode = statusCode;
|
||||||
|
|
||||||
statusCode |= 0;
|
statusCode |= 0;
|
||||||
if (statusCode < 100 || statusCode > 999)
|
if (statusCode < 100 || statusCode > 999)
|
||||||
throw new RangeError(`Invalid status code: ${statusCode}`);
|
throw new RangeError(`Invalid status code: ${originalStatusCode}`);
|
||||||
|
|
||||||
if (typeof reason === 'string') {
|
if (typeof reason === 'string') {
|
||||||
// writeHead(statusCode, reasonPhrase[, headers])
|
// writeHead(statusCode, reasonPhrase[, headers])
|
||||||
|
@ -20,17 +20,17 @@ const server = http.Server(common.mustCall(function(req, res) {
|
|||||||
case 1:
|
case 1:
|
||||||
assert.throws(common.mustCall(() => {
|
assert.throws(common.mustCall(() => {
|
||||||
res.writeHead(Infinity);
|
res.writeHead(Infinity);
|
||||||
}), createErrorMessage(0));
|
}), createErrorMessage(Infinity));
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
assert.throws(common.mustCall(() => {
|
assert.throws(common.mustCall(() => {
|
||||||
res.writeHead(NaN);
|
res.writeHead(NaN);
|
||||||
}), createErrorMessage(0));
|
}), createErrorMessage(NaN));
|
||||||
break;
|
break;
|
||||||
case 3:
|
case 3:
|
||||||
assert.throws(common.mustCall(() => {
|
assert.throws(common.mustCall(() => {
|
||||||
res.writeHead({});
|
res.writeHead({});
|
||||||
}), createErrorMessage(0));
|
}), createErrorMessage('\\[object Object\\]'));
|
||||||
break;
|
break;
|
||||||
case 4:
|
case 4:
|
||||||
assert.throws(common.mustCall(() => {
|
assert.throws(common.mustCall(() => {
|
||||||
@ -45,37 +45,37 @@ const server = http.Server(common.mustCall(function(req, res) {
|
|||||||
case 6:
|
case 6:
|
||||||
assert.throws(common.mustCall(() => {
|
assert.throws(common.mustCall(() => {
|
||||||
res.writeHead('1000');
|
res.writeHead('1000');
|
||||||
}), createErrorMessage(1000));
|
}), createErrorMessage('1000'));
|
||||||
break;
|
break;
|
||||||
case 7:
|
case 7:
|
||||||
assert.throws(common.mustCall(() => {
|
assert.throws(common.mustCall(() => {
|
||||||
res.writeHead(null);
|
res.writeHead(null);
|
||||||
}), createErrorMessage(0));
|
}), createErrorMessage(null));
|
||||||
break;
|
break;
|
||||||
case 8:
|
case 8:
|
||||||
assert.throws(common.mustCall(() => {
|
assert.throws(common.mustCall(() => {
|
||||||
res.writeHead(true);
|
res.writeHead(true);
|
||||||
}), createErrorMessage(1));
|
}), createErrorMessage(true));
|
||||||
break;
|
break;
|
||||||
case 9:
|
case 9:
|
||||||
assert.throws(common.mustCall(() => {
|
assert.throws(common.mustCall(() => {
|
||||||
res.writeHead([]);
|
res.writeHead([]);
|
||||||
}), createErrorMessage(0));
|
}), createErrorMessage([]));
|
||||||
break;
|
break;
|
||||||
case 10:
|
case 10:
|
||||||
assert.throws(common.mustCall(() => {
|
assert.throws(common.mustCall(() => {
|
||||||
res.writeHead('this is not valid');
|
res.writeHead('this is not valid');
|
||||||
}), createErrorMessage(0));
|
}), createErrorMessage('this is not valid'));
|
||||||
break;
|
break;
|
||||||
case 11:
|
case 11:
|
||||||
assert.throws(common.mustCall(() => {
|
assert.throws(common.mustCall(() => {
|
||||||
res.writeHead('404 this is not valid either');
|
res.writeHead('404 this is not valid either');
|
||||||
}), createErrorMessage(0));
|
}), createErrorMessage('404 this is not valid either'));
|
||||||
break;
|
break;
|
||||||
case 12:
|
case 12:
|
||||||
assert.throws(common.mustCall(() => {
|
assert.throws(common.mustCall(() => {
|
||||||
res.writeHead();
|
res.writeHead();
|
||||||
}), createErrorMessage(0));
|
}), createErrorMessage(undefined));
|
||||||
this.close();
|
this.close();
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user