From 0dd6f04c58cbb2820563085bd4b23e1ecc665c0f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20M=C3=A4der?= Date: Tue, 3 Sep 2024 16:56:17 +0200 Subject: [PATCH] Remove the timeout handler when an request is handled. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fixes #14117 Contributed on behalf of STMicroelectronics Signed-off-by: Thomas Mäder --- dev-packages/request/src/node-request-service.ts | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/dev-packages/request/src/node-request-service.ts b/dev-packages/request/src/node-request-service.ts index e31a022bc1ef6..2a5e491ec37e8 100644 --- a/dev-packages/request/src/node-request-service.ts +++ b/dev-packages/request/src/node-request-service.ts @@ -31,7 +31,6 @@ export interface NodeRequestOptions extends RequestOptions { }; export class NodeRequestService implements RequestService { - protected proxyUrl?: string; protected strictSSL?: boolean; protected authorization?: string; @@ -107,9 +106,14 @@ export class NodeRequestService implements RequestService { opts.auth = options.user + ':' + options.password; } + const timeoutHandler = () => { + reject('timeout'); + }; + const req = rawRequest(opts, async res => { const followRedirects = options.followRedirects ?? 3; if (res.statusCode && res.statusCode >= 300 && res.statusCode < 400 && followRedirects > 0 && res.headers.location) { + req.off('timeout', timeoutHandler); this.request({ ...options, url: res.headers.location, @@ -125,6 +129,7 @@ export class NodeRequestService implements RequestService { }); stream.on('end', () => { + req.off('timeout', timeoutHandler); const buffer = Buffer.concat(chunks); resolve({ url: options.url, @@ -146,9 +151,7 @@ export class NodeRequestService implements RequestService { reject(err); }); - req.on('timeout', () => { - reject('timeout'); - }); + req.on('timeout', timeoutHandler); if (options.timeout) { req.setTimeout(options.timeout);