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 <[email protected]> Reviewed-By: Colin Ihrig <[email protected]> Reviewed-By: Benjamin Gruenbaum <[email protected]> Reviewed-By: Luigi Pinca <[email protected]> Reviewed-By: Tobias Nießen <[email protected]>
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

+2-1
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

+1
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)