From 0a2d8ca16e6b28d9c54f46250182348d5312e0c7 Mon Sep 17 00:00:00 2001
From: Rodrigo Nascimento <rodrigoknascimento@gmail.com>
Date: Wed, 19 Aug 2020 18:20:16 -0300
Subject: [PATCH] Set default timeout of 20s for HTTP calls (#18549)

---
 packages/rocketchat-mongo-config/package.js      |  1 +
 packages/rocketchat-mongo-config/server/index.js | 12 ++++++++++++
 2 files changed, 13 insertions(+)

diff --git a/packages/rocketchat-mongo-config/package.js b/packages/rocketchat-mongo-config/package.js
index bfb81a6d3d0..2ff3667b23d 100644
--- a/packages/rocketchat-mongo-config/package.js
+++ b/packages/rocketchat-mongo-config/package.js
@@ -10,6 +10,7 @@ Package.onUse(function(api) {
 		'ecmascript',
 		'mongo',
 		'email',
+		'http',
 	]);
 
 	api.mainModule('server/index.js', 'server');
diff --git a/packages/rocketchat-mongo-config/server/index.js b/packages/rocketchat-mongo-config/server/index.js
index ad711c61238..5c39b353a5b 100644
--- a/packages/rocketchat-mongo-config/server/index.js
+++ b/packages/rocketchat-mongo-config/server/index.js
@@ -3,6 +3,18 @@ import { PassThrough } from 'stream';
 
 import { EmailTest } from 'meteor/email';
 import { Mongo } from 'meteor/mongo';
+import { HTTP } from 'meteor/http';
+
+// Set default HTTP call timeout to 20s
+const envTimeout = parseInt(process.env.HTTP_DEFAULT_TIMEOUT, 10);
+const timeout = !isNaN(envTimeout) ? envTimeout : 20000;
+
+const { call } = HTTP;
+HTTP.call = function _call(method, url, options = {}, callback) {
+	const defaultTimeout = 'timeout' in options ? options : { ...options, timeout };
+
+	return call.call(HTTP, method, url, defaultTimeout, callback);
+};
 
 // FIX For TLS error see more here https://github.com/RocketChat/Rocket.Chat/issues/9316
 // TODO: Remove after NodeJS fix it, more information
-- 
GitLab