Skip to content

Commit e8f319f

Browse files
committed
http2: emit timeout on compat request and response
Fixes: #20079
1 parent dcfd323 commit e8f319f

File tree

3 files changed

+11
-0
lines changed

3 files changed

+11
-0
lines changed

lib/internal/http2/compat.js

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -243,6 +243,13 @@ function onStreamCloseRequest() {
243243
req.emit('close');
244244
}
245245

246+
function onStreamTimeout(kind) {
247+
return function onStreamTimeout() {
248+
const obj = this[kind];
249+
obj.emit('timeout');
250+
}
251+
}
252+
246253
class Http2ServerRequest extends Readable {
247254
constructor(stream, headers, options, rawHeaders) {
248255
super(options);
@@ -265,6 +272,7 @@ class Http2ServerRequest extends Readable {
265272
stream.on('error', onStreamError);
266273
stream.on('aborted', onStreamAbortedRequest);
267274
stream.on('close', onStreamCloseRequest);
275+
stream.on('timeout', onStreamTimeout(kRequest));
268276
this.on('pause', onRequestPause);
269277
this.on('resume', onRequestResume);
270278
}
@@ -418,6 +426,7 @@ class Http2ServerResponse extends Stream {
418426
stream.on('aborted', onStreamAbortedResponse);
419427
stream.on('close', onStreamCloseResponse);
420428
stream.on('wantTrailers', onStreamTrailersReady);
429+
stream.on('timeout', onStreamTimeout(kResponse));
421430
}
422431

423432
// User land modules such as finalhandler just check truthiness of this

test/parallel/test-http2-compat-serverrequest-settimeout.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ server.on('request', (req, res) => {
1212
req.setTimeout(msecs, common.mustCall(() => {
1313
res.end();
1414
}));
15+
req.on('timeout', common.mustCall());
1516
res.on('finish', common.mustCall(() => {
1617
req.setTimeout(msecs, common.mustNotCall());
1718
process.nextTick(() => {

test/parallel/test-http2-compat-serverresponse-settimeout.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ server.on('request', (req, res) => {
1212
res.setTimeout(msecs, common.mustCall(() => {
1313
res.end();
1414
}));
15+
res.on('timeout', common.mustCall());
1516
res.on('finish', common.mustCall(() => {
1617
res.setTimeout(msecs, common.mustNotCall());
1718
process.nextTick(() => {

0 commit comments

Comments
 (0)