From 8d03496068957c3cc2e29fb5569a7da1af554a5c Mon Sep 17 00:00:00 2001 From: akwizgran <akwizgran@users.sourceforge.net> Date: Thu, 18 Feb 2016 16:03:03 +0000 Subject: [PATCH] Don't reschedule the same TimerTask. #254 --- .../transport/TransportKeyManager.java | 21 ++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/briar-core/src/org/briarproject/transport/TransportKeyManager.java b/briar-core/src/org/briarproject/transport/TransportKeyManager.java index b380765787..fd43e3eee2 100644 --- a/briar-core/src/org/briarproject/transport/TransportKeyManager.java +++ b/briar-core/src/org/briarproject/transport/TransportKeyManager.java @@ -27,7 +27,7 @@ import static org.briarproject.api.transport.TransportConstants.MAX_CLOCK_DIFFER import static org.briarproject.api.transport.TransportConstants.TAG_LENGTH; import static org.briarproject.util.ByteUtils.MAX_32_BIT_UNSIGNED; -class TransportKeyManager extends TimerTask { +class TransportKeyManager { private static final Logger LOG = Logger.getLogger(TransportKeyManager.class.getName()); @@ -110,8 +110,7 @@ class TransportKeyManager extends TimerTask { lock.unlock(); } // Schedule the next key rotation - long delay = rotationPeriodLength - now % rotationPeriodLength; - timer.schedule(this, delay); + scheduleKeyRotation(now); } // Locking: lock @@ -133,6 +132,16 @@ class TransportKeyManager extends TimerTask { } } + private void scheduleKeyRotation(long now) { + TimerTask task = new TimerTask() { + public void run() { + rotateKeys(); + } + }; + long delay = rotationPeriodLength - now % rotationPeriodLength; + timer.schedule(task, delay); + } + void addContact(ContactId c, SecretKey master, long timestamp, boolean alice) { lock.lock(); @@ -253,8 +262,7 @@ class TransportKeyManager extends TimerTask { } } - @Override - public void run() { + private void rotateKeys() { long now = clock.currentTimeMillis(); lock.lock(); try { @@ -293,8 +301,7 @@ class TransportKeyManager extends TimerTask { lock.unlock(); } // Schedule the next key rotation - long delay = rotationPeriodLength - now % rotationPeriodLength; - timer.schedule(this, delay); + scheduleKeyRotation(now); } private static class TagContext { -- GitLab