From 56a834a53f7e1651b2f5b7533da3b1df27bb8498 Mon Sep 17 00:00:00 2001 From: Alba Mendez Date: Sun, 26 May 2019 13:12:41 +0200 Subject: [PATCH] doc,test: clarify that Http2Stream is destroyed after data is read Correct docs to clarify that behaviour, and fix a race condition in test-http2-large-write-destroy.js. Fixes: https://github.com/nodejs/node/issues/27863 Backport-PR-URL: https://github.com/nodejs/node/pull/28904 PR-URL: https://github.com/nodejs/node/pull/27891 Reviewed-By: Anna Henningsen Reviewed-By: Ruben Bridgewater Reviewed-By: Colin Ihrig Reviewed-By: Rich Trott Reviewed-By: Luigi Pinca --- doc/api/http2.md | 5 +++-- test/parallel/test-http2-large-write-destroy.js | 1 + 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/doc/api/http2.md b/doc/api/http2.md index 4b7709bc8575b7..897ccb5584c4d1 100644 --- a/doc/api/http2.md +++ b/doc/api/http2.md @@ -902,8 +902,9 @@ the value is `undefined`, the stream is not yet ready for use. All [`Http2Stream`][] instances are destroyed either when: -* An `RST_STREAM` frame for the stream is received by the connected peer. -* The `http2stream.close()` method is called. +* An `RST_STREAM` frame for the stream is received by the connected peer, + and pending data has been read. +* The `http2stream.close()` method is called, and pending data has been read. * The `http2stream.destroy()` or `http2session.destroy()` methods are called. When an `Http2Stream` instance is destroyed, an attempt will be made to send an diff --git a/test/parallel/test-http2-large-write-destroy.js b/test/parallel/test-http2-large-write-destroy.js index 24c0a055cc943f..b59c66bb04755b 100644 --- a/test/parallel/test-http2-large-write-destroy.js +++ b/test/parallel/test-http2-large-write-destroy.js @@ -32,6 +32,7 @@ server.listen(0, common.mustCall(() => { const req = client.request({ ':path': '/' }); req.end(); + req.resume(); // Otherwise close won't be emitted if there's pending data. req.on('close', common.mustCall(() => { client.close();