diff options
author | Satya Rohith <me@satyarohith.com> | 2024-05-02 18:34:42 +0530 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-05-02 18:34:42 +0530 |
commit | 811280af77b5136a2592af7447ac566674309065 (patch) | |
tree | f4de410ec9cb3a01336f71c9382ec7e2cb547a43 | |
parent | 56ba7f3c233fcf8c9478314956c70725179ed16f (diff) |
fix(ext/node): check resource exists before close (#23655)
-rw-r--r-- | ext/node/polyfills/http2.ts | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/ext/node/polyfills/http2.ts b/ext/node/polyfills/http2.ts index bc8347469..b9d9f4b06 100644 --- a/ext/node/polyfills/http2.ts +++ b/ext/node/polyfills/http2.ts @@ -1015,7 +1015,7 @@ export class ClientHttp2Stream extends Duplex { this.emit("trailers", trailers); } - debugHttp2("tryClose"); + debugHttp2(">>> tryClose", this[kDenoResponse]?.bodyRid); core.tryClose(this[kDenoResponse].bodyRid); this.push(null); debugHttp2(">>> read null chunk"); @@ -1246,10 +1246,12 @@ function finishCloseStream(stream, code) { debugHttp2( ">>> finishCloseStream close", stream[kDenoRid], - stream[kDenoResponse].bodyRid, + stream[kDenoResponse]?.bodyRid, ); core.tryClose(stream[kDenoRid]); - core.tryClose(stream[kDenoResponse].bodyRid); + if (stream[kDenoResponse]) { + core.tryClose(stream[kDenoResponse].bodyRid); + } stream.emit("close"); }); }); @@ -1265,7 +1267,9 @@ function finishCloseStream(stream, code) { stream[kDenoResponse].bodyRid, ); core.tryClose(stream[kDenoRid]); - core.tryClose(stream[kDenoResponse].bodyRid); + if (stream[kDenoResponse]) { + core.tryClose(stream[kDenoResponse].bodyRid); + } nextTick(() => { stream.emit("close"); }); @@ -1273,10 +1277,12 @@ function finishCloseStream(stream, code) { debugHttp2( ">>> finishCloseStream close2 catch", stream[kDenoRid], - stream[kDenoResponse].bodyRid, + stream[kDenoResponse]?.bodyRid, ); core.tryClose(stream[kDenoRid]); - core.tryClose(stream[kDenoResponse].bodyRid); + if (stream[kDenoResponse]) { + core.tryClose(stream[kDenoResponse].bodyRid); + } nextTick(() => { stream.emit("close"); }); |