Skip to content

Commit d8ff550

Browse files
apapirovskiMylesBorins
authored andcommitted
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: #15232 Fixes: #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>
1 parent 71f90c6 commit d8ff550

File tree

2 files changed

+3
-1
lines changed

2 files changed

+3
-1
lines changed

lib/internal/http2/compat.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -320,7 +320,7 @@ class Http2ServerResponse extends Stream {
320320

321321
get headersSent() {
322322
const stream = this[kStream];
323-
return stream.headersSent;
323+
return stream !== undefined ? stream.headersSent : this[kState].headersSent;
324324
}
325325

326326
get sendDate() {
@@ -542,6 +542,7 @@ class Http2ServerResponse extends Stream {
542542
if (code !== undefined)
543543
state.closedCode = code;
544544
state.closed = true;
545+
state.headersSent = this[kStream].headersSent;
545546
this.end();
546547
this[kStream] = undefined;
547548
this.emit('finish');

test/parallel/test-http2-compat-serverresponse-headers.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,7 @@ server.listen(0, common.mustCall(function() {
8888

8989
response.on('finish', common.mustCall(function() {
9090
assert.strictEqual(response.code, h2.constants.NGHTTP2_NO_ERROR);
91+
assert.strictEqual(response.headersSent, true);
9192
server.close();
9293
}));
9394
response.end();

0 commit comments

Comments
 (0)