mirror of
https://github.com/zebrajr/node.git
synced 2026-01-15 12:15:26 +00:00
http2: always call callback on Http2ServerResponse#end
Fixes: https://github.com/nodejs/node/issues/28001 PR-URL: https://github.com/nodejs/node/pull/33911 Reviewed-By: Anna Henningsen <anna@addaleax.net> Reviewed-By: Denys Otrishko <shishugi@gmail.com> Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
This commit is contained in:
committed by
Anna Henningsen
parent
e199fc5534
commit
fdcd4893ff
@@ -709,11 +709,6 @@ class Http2ServerResponse extends Stream {
|
||||
const stream = this[kStream];
|
||||
const state = this[kState];
|
||||
|
||||
if ((state.closed || state.ending) &&
|
||||
state.headRequest === stream.headRequest) {
|
||||
return this;
|
||||
}
|
||||
|
||||
if (typeof chunk === 'function') {
|
||||
cb = chunk;
|
||||
chunk = null;
|
||||
@@ -722,6 +717,14 @@ class Http2ServerResponse extends Stream {
|
||||
encoding = 'utf8';
|
||||
}
|
||||
|
||||
if ((state.closed || state.ending) &&
|
||||
state.headRequest === stream.headRequest) {
|
||||
if (typeof cb === 'function') {
|
||||
process.nextTick(cb);
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
if (chunk !== null && chunk !== undefined)
|
||||
this.write(chunk, encoding);
|
||||
|
||||
|
||||
@@ -25,16 +25,16 @@ const {
|
||||
// but callback will only be called once
|
||||
const server = createServer(mustCall((request, response) => {
|
||||
response.end('end', 'utf8', mustCall(() => {
|
||||
response.end(mustNotCall());
|
||||
response.end(mustCall());
|
||||
process.nextTick(() => {
|
||||
response.end(mustNotCall());
|
||||
response.end(mustCall());
|
||||
server.close();
|
||||
});
|
||||
}));
|
||||
response.on('finish', mustCall(() => {
|
||||
response.end(mustNotCall());
|
||||
response.end(mustCall());
|
||||
}));
|
||||
response.end(mustNotCall());
|
||||
response.end(mustCall());
|
||||
}));
|
||||
server.listen(0, mustCall(() => {
|
||||
let data = '';
|
||||
@@ -294,7 +294,7 @@ const {
|
||||
}));
|
||||
response.end('data', mustCall(() => {
|
||||
strictEqual(finished, false);
|
||||
response.end('data', mustNotCall());
|
||||
response.end('data', mustCall());
|
||||
}));
|
||||
}));
|
||||
server.listen(0, mustCall(() => {
|
||||
@@ -328,7 +328,7 @@ const {
|
||||
// Should be able to respond to HEAD with just .end
|
||||
const server = createServer(mustCall((request, response) => {
|
||||
response.end('data', mustCall());
|
||||
response.end(mustNotCall());
|
||||
response.end(mustCall());
|
||||
}));
|
||||
server.listen(0, mustCall(() => {
|
||||
const { port } = server.address();
|
||||
|
||||
Reference in New Issue
Block a user