mirror of https://github.com/nodejs/node.git
test: test case for multiple res.writeHead and res.getHeader
PR-URL: https://github.com/nodejs/node/pull/45508 Fixes: https://github.com/nodejs/node/issues/36721 Reviewed-By: Robert Nagy <ronagy@icloud.com> Reviewed-By: Paolo Insogna <paolo@cowtech.it> Reviewed-By: Luigi Pinca <luigipinca@gmail.com> Reviewed-By: Yagiz Nizipli <yagiz@nizipli.com> Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
This commit is contained in:
parent
be9cd3ecb0
commit
c03354d3e0
|
@ -331,6 +331,11 @@ ServerResponse.prototype._implicitHeader = function _implicitHeader() {
|
||||||
|
|
||||||
ServerResponse.prototype.writeHead = writeHead;
|
ServerResponse.prototype.writeHead = writeHead;
|
||||||
function writeHead(statusCode, reason, obj) {
|
function writeHead(statusCode, reason, obj) {
|
||||||
|
|
||||||
|
if (this._header) {
|
||||||
|
throw new ERR_HTTP_HEADERS_SENT('write');
|
||||||
|
}
|
||||||
|
|
||||||
const originalStatusCode = statusCode;
|
const originalStatusCode = statusCode;
|
||||||
|
|
||||||
statusCode |= 0;
|
statusCode |= 0;
|
||||||
|
|
|
@ -46,8 +46,9 @@ const server = http.createServer((req, res) => {
|
||||||
|
|
||||||
b.on('error', common.mustCall((er) => {
|
b.on('error', common.mustCall((er) => {
|
||||||
if (res) {
|
if (res) {
|
||||||
res.writeHead(500);
|
// Introduce an error on the client by writing unexpected data.
|
||||||
res.end('An error occurred');
|
// The client is now expecting a chunk header so any letter will have the parser throw an error.
|
||||||
|
res.socket.write('H');
|
||||||
}
|
}
|
||||||
// res.writeHead(500), res.destroy, etc.
|
// res.writeHead(500), res.destroy, etc.
|
||||||
server.close();
|
server.close();
|
||||||
|
|
|
@ -58,7 +58,6 @@ const s = http.createServer(common.mustCall((req, res) => {
|
||||||
}, {
|
}, {
|
||||||
code: 'ERR_HTTP_HEADERS_SENT',
|
code: 'ERR_HTTP_HEADERS_SENT',
|
||||||
name: 'Error',
|
name: 'Error',
|
||||||
message: 'Cannot render headers after they are sent to the client'
|
|
||||||
});
|
});
|
||||||
|
|
||||||
res.end();
|
res.end();
|
||||||
|
@ -76,3 +75,24 @@ function runTest() {
|
||||||
response.resume();
|
response.resume();
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
const server = http.createServer(common.mustCall((req, res) => {
|
||||||
|
res.writeHead(200, [ 'test', '1' ]);
|
||||||
|
assert.throws(() => res.writeHead(200, [ 'test2', '2' ]), {
|
||||||
|
code: 'ERR_HTTP_HEADERS_SENT',
|
||||||
|
name: 'Error',
|
||||||
|
});
|
||||||
|
res.end();
|
||||||
|
}));
|
||||||
|
|
||||||
|
server.listen(0, common.mustCall(() => {
|
||||||
|
http.get({ port: server.address().port }, (res) => {
|
||||||
|
assert.strictEqual(res.headers.test, '1');
|
||||||
|
assert.strictEqual('test2' in res.headers, false);
|
||||||
|
res.resume().on('end', common.mustCall(() => {
|
||||||
|
server.close();
|
||||||
|
}));
|
||||||
|
});
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue