From bc437095f658773eb7636596cfd5241e8ec1817b Mon Sep 17 00:00:00 2001 From: Scott Nonnenberg Date: Fri, 28 Jul 2017 11:11:26 -0700 Subject: [PATCH] Calm time travel checks, don't continually reschedule key rotation FREEBIE --- js/rotate_signed_prekey_listener.js | 21 ++++++++++++++------- js/wall_clock_listener.js | 5 ++--- 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/js/rotate_signed_prekey_listener.js b/js/rotate_signed_prekey_listener.js index 897c41fdcd9..d9ee9cc7fa5 100644 --- a/js/rotate_signed_prekey_listener.js +++ b/js/rotate_signed_prekey_listener.js @@ -7,6 +7,7 @@ window.Whisper = window.Whisper || {}; var ROTATION_INTERVAL = 48 * 60 * 60 * 1000; var timeout; + var scheduledTime; function scheduleNextRotation() { var now = Date.now(); @@ -35,14 +36,20 @@ function setTimeoutForNextRun() { var now = Date.now(); - var scheduledTime = storage.get('nextSignedKeyRotationTime', now); - console.log('Next signed key rotation scheduled for', new Date(scheduledTime)); - var waitTime = scheduledTime - now; - if (waitTime < 0) { - waitTime = 0; + var time = storage.get('nextSignedKeyRotationTime', now); + + if (scheduledTime !== time || !timeout) { + scheduledTime = time; + + console.log('Next signed key rotation scheduled for', new Date(time)); + var waitTime = time - now; + if (waitTime < 0) { + waitTime = 0; + } + + clearTimeout(timeout); + timeout = setTimeout(runWhenOnline, waitTime); } - clearTimeout(timeout); - timeout = setTimeout(runWhenOnline, waitTime); } Whisper.RotateSignedPreKeyListener = { diff --git a/js/wall_clock_listener.js b/js/wall_clock_listener.js index c7c1b596ba9..558a8b3461b 100644 --- a/js/wall_clock_listener.js +++ b/js/wall_clock_listener.js @@ -7,12 +7,11 @@ window.Whisper = window.Whisper || {}; var lastTime; - var interval = 1000; + var interval = 5000; var events; function checkTime() { var currentTime = Date.now(); if (currentTime > (lastTime + interval * 2)) { - console.log('time travel detected!'); events.trigger('timetravel'); } lastTime = currentTime; @@ -22,7 +21,7 @@ init: function(_events) { events = _events; lastTime = Date.now(); - setInterval(checkTime, 1000); + setInterval(checkTime, interval); } }; }());