http2: fix session[kSession] undefined issue
`finishSessionDestroy` session cleanup when already done. PR-URL: https://github.com/nodejs/node/pull/24547 Fixes: https://github.com/nodejs/node/issues/24546 Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Luigi Pinca <luigipinca@gmail.com> Reviewed-By: Ouyang Yadong <oyydoibh@gmail.com> Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
This commit is contained in:
parent
a57343c727
commit
895fe2f574
@ -1989,6 +1989,7 @@ class Http2Stream extends Duplex {
|
||||
// attempt to gracefully close the session.
|
||||
const state = this[kState];
|
||||
if (this.headersSent &&
|
||||
this[kSession] &&
|
||||
this[kSession][kType] === NGHTTP2_SESSION_SERVER &&
|
||||
!(state.flags & STREAM_FLAGS_HAS_TRAILERS) &&
|
||||
!state.didRead &&
|
||||
|
20
test/parallel/test-http2-server-session-destroy.js
Normal file
20
test/parallel/test-http2-server-session-destroy.js
Normal file
@ -0,0 +1,20 @@
|
||||
'use strict';
|
||||
|
||||
const common = require('../common');
|
||||
if (!common.hasCrypto)
|
||||
common.skip('missing crypto');
|
||||
const h2 = require('http2');
|
||||
|
||||
const server = h2.createServer();
|
||||
server.listen(0, common.localhostIPv4, common.mustCall(() => {
|
||||
const afterConnect = common.mustCall((session) => {
|
||||
session.request({ ':method': 'POST' }).end(common.mustCall(() => {
|
||||
session.destroy();
|
||||
server.close();
|
||||
}));
|
||||
});
|
||||
|
||||
const port = server.address().port;
|
||||
const host = common.localhostIPv4;
|
||||
h2.connect('http://' + host + ':' + port, afterConnect);
|
||||
}));
|
Loading…
x
Reference in New Issue
Block a user