summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJames M Snell <jasnell@gmail.com>2018-08-10 13:33:46 -0700
committerJames M Snell <jasnell@gmail.com>2018-08-15 15:58:41 -0700
commit32902d09b43e9d7f19eb6178ef5db835652d97c1 (patch)
tree1e2ebe3a42f0c592555589f8fc830619f66fce3f
parent755520c4c3f9e1f85268d65ca647dec076e9a17a (diff)
downloadandroid-node-v8-32902d09b43e9d7f19eb6178ef5db835652d97c1.tar.gz
android-node-v8-32902d09b43e9d7f19eb6178ef5db835652d97c1.tar.bz2
android-node-v8-32902d09b43e9d7f19eb6178ef5db835652d97c1.zip
http2: emit timeout on compat request and response
Fixes: https://github.com/nodejs/node/issues/20079 PR-URL: https://github.com/nodejs/node/pull/22252 Reviewed-By: Matteo Collina <matteo.collina@gmail.com> Reviewed-By: Trivikram Kamat <trivikr.dev@gmail.com>
-rw-r--r--lib/internal/http2/compat.js9
-rw-r--r--test/parallel/test-http2-compat-serverrequest-settimeout.js1
-rw-r--r--test/parallel/test-http2-compat-serverresponse-settimeout.js1
3 files changed, 11 insertions, 0 deletions
diff --git a/lib/internal/http2/compat.js b/lib/internal/http2/compat.js
index 33f636f69b..40276d8723 100644
--- a/lib/internal/http2/compat.js
+++ b/lib/internal/http2/compat.js
@@ -241,6 +241,13 @@ function onStreamCloseRequest() {
req.emit('close');
}
+function onStreamTimeout(kind) {
+ return function onStreamTimeout() {
+ const obj = this[kind];
+ obj.emit('timeout');
+ };
+}
+
class Http2ServerRequest extends Readable {
constructor(stream, headers, options, rawHeaders) {
super(options);
@@ -263,6 +270,7 @@ class Http2ServerRequest extends Readable {
stream.on('error', onStreamError);
stream.on('aborted', onStreamAbortedRequest);
stream.on('close', onStreamCloseRequest);
+ stream.on('timeout', onStreamTimeout(kRequest));
this.on('pause', onRequestPause);
this.on('resume', onRequestResume);
}
@@ -416,6 +424,7 @@ class Http2ServerResponse extends Stream {
stream.on('aborted', onStreamAbortedResponse);
stream.on('close', onStreamCloseResponse);
stream.on('wantTrailers', onStreamTrailersReady);
+ stream.on('timeout', onStreamTimeout(kResponse));
}
// User land modules such as finalhandler just check truthiness of this
diff --git a/test/parallel/test-http2-compat-serverrequest-settimeout.js b/test/parallel/test-http2-compat-serverrequest-settimeout.js
index 81184d7075..4b7a629cf5 100644
--- a/test/parallel/test-http2-compat-serverrequest-settimeout.js
+++ b/test/parallel/test-http2-compat-serverrequest-settimeout.js
@@ -12,6 +12,7 @@ server.on('request', (req, res) => {
req.setTimeout(msecs, common.mustCall(() => {
res.end();
}));
+ req.on('timeout', common.mustCall());
res.on('finish', common.mustCall(() => {
req.setTimeout(msecs, common.mustNotCall());
process.nextTick(() => {
diff --git a/test/parallel/test-http2-compat-serverresponse-settimeout.js b/test/parallel/test-http2-compat-serverresponse-settimeout.js
index 220a84a754..e24621ad09 100644
--- a/test/parallel/test-http2-compat-serverresponse-settimeout.js
+++ b/test/parallel/test-http2-compat-serverresponse-settimeout.js
@@ -12,6 +12,7 @@ server.on('request', (req, res) => {
res.setTimeout(msecs, common.mustCall(() => {
res.end();
}));
+ res.on('timeout', common.mustCall());
res.on('finish', common.mustCall(() => {
res.setTimeout(msecs, common.mustNotCall());
process.nextTick(() => {