http2: store headersSent after stream destroyed
Store headersSent directly on response state after finish event is triggered, so that users can always access it. PR-URL: https://github.com/nodejs/node/pull/15232 Fixes: https://github.com/nodejs/node/issues/15226 Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com> Reviewed-By: Luigi Pinca <luigipinca@gmail.com> Reviewed-By: Tobias Nießen <tniessen@tnie.de>
This commit is contained in:
parent
94be2b1793
commit
78fc726203
@ -320,7 +320,7 @@ class Http2ServerResponse extends Stream {
|
||||
|
||||
get headersSent() {
|
||||
const stream = this[kStream];
|
||||
return stream.headersSent;
|
||||
return stream !== undefined ? stream.headersSent : this[kState].headersSent;
|
||||
}
|
||||
|
||||
get sendDate() {
|
||||
@ -542,6 +542,7 @@ class Http2ServerResponse extends Stream {
|
||||
if (code !== undefined)
|
||||
state.closedCode = code;
|
||||
state.closed = true;
|
||||
state.headersSent = this[kStream].headersSent;
|
||||
this.end();
|
||||
this[kStream] = undefined;
|
||||
this.emit('finish');
|
||||
|
@ -88,6 +88,7 @@ server.listen(0, common.mustCall(function() {
|
||||
|
||||
response.on('finish', common.mustCall(function() {
|
||||
assert.strictEqual(response.code, h2.constants.NGHTTP2_NO_ERROR);
|
||||
assert.strictEqual(response.headersSent, true);
|
||||
server.close();
|
||||
}));
|
||||
response.end();
|
||||
|
Loading…
x
Reference in New Issue
Block a user