Skip to content

Commit a5d6a6f

Browse files
committed
http2: store headersSent after stream destroyed
Store headersSent directly on response state after finish event is triggered, so that users can always access it. Fixes: #15226
1 parent 4477155 commit a5d6a6f

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
@@ -299,7 +299,7 @@ class Http2ServerResponse extends Stream {
299299

300300
get headersSent() {
301301
const stream = this[kStream];
302-
return stream.headersSent;
302+
return stream !== undefined ? stream.headersSent : this[kState].headersSent;
303303
}
304304

305305
get sendDate() {
@@ -526,6 +526,7 @@ class Http2ServerResponse extends Stream {
526526
if (code !== undefined)
527527
state.closedCode = code;
528528
state.closed = true;
529+
state.headersSent = this[kStream].headersSent;
529530
this.end();
530531
this[kStream] = undefined;
531532
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)