From 3e59d0e13bb4625fc6d85904cbbc9caec10c5e70 Mon Sep 17 00:00:00 2001 From: Bauke Date: Fri, 21 Oct 2022 18:49:16 +0200 Subject: [PATCH] Add safety checks for infinite loops. --- source/background-scripts/initialize.ts | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/source/background-scripts/initialize.ts b/source/background-scripts/initialize.ts index 3722c61..066216f 100644 --- a/source/background-scripts/initialize.ts +++ b/source/background-scripts/initialize.ts @@ -19,7 +19,17 @@ browser.runtime.onInstalled.addListener(async () => { }); browser.webNavigation.onBeforeNavigate.addListener(async (details) => { + const {latestTime} = await browser.storage.local.get('latestTime'); + const redirectDelta = Date.now() - (latestTime ?? 0); + if (redirectDelta < 100) { + return; + } + const url = new URL(details.url); + const {latestUrl} = await browser.storage.local.get('latestUrl'); + if (redirectDelta < 30_000 && url.href === latestUrl) { + return; + } for (const [id, parameters] of Object.entries( await browser.storage.local.get(), @@ -32,6 +42,10 @@ browser.webNavigation.onBeforeNavigate.addListener(async (details) => { if (redirect.isMatch(url)) { const redirectedUrl = redirect.redirect(url); await browser.tabs.update({url: redirectedUrl.href}); + await browser.storage.local.set({ + latestTime: Date.now(), + latestUrl: url.href, + }); break; } }