From d8bbe043e43e047c248111504eaff06b4f72c9cb Mon Sep 17 00:00:00 2001 From: Diego Sampaio Date: Tue, 26 Jun 2018 16:31:00 -0300 Subject: [PATCH] Force script to time out --- packages/rocketchat-integrations/server/api/api.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/packages/rocketchat-integrations/server/api/api.js b/packages/rocketchat-integrations/server/api/api.js index 4cd35bd1b937..2d78933c2274 100644 --- a/packages/rocketchat-integrations/server/api/api.js +++ b/packages/rocketchat-integrations/server/api/api.js @@ -62,6 +62,9 @@ const Api = new Restivus({ const compiledScripts = {}; function buildSandbox(store = {}) { const sandbox = { + scriptTimeout(reject) { + return setTimeout(() => reject('timed out'), 3000); + }, _, s, console, @@ -243,13 +246,14 @@ function executeIntegrationRest() { const result = Future.fromPromise(vm.runInNewContext(` new Promise((resolve, reject) => { Fiber(() => { + scriptTimeout(reject); try { resolve(script.process_incoming_request({ request: request })); } catch(e) { reject(e); } }).run(); - }).catch((error) => console.error(error)); + }).catch((error) => { throw new Error(error); }); `, sandbox, { timeout: 3000 })).wait();