Browse Source

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>
canary-base
Anatoli Papirovski 8 years ago
committed by Ruben Bridgewater
parent
commit
78fc726203
No known key found for this signature in database GPG Key ID: F07496B3EB3C1762
  1. 3
      lib/internal/http2/compat.js
  2. 1
      test/parallel/test-http2-compat-serverresponse-headers.js

3
lib/internal/http2/compat.js

@ -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');

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

@ -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…
Cancel
Save