From 6c4c0926c5a21efdcc0b8fb77b0c84f0aa152f24 Mon Sep 17 00:00:00 2001 From: akwizgran <michael@briarproject.org> Date: Thu, 25 Apr 2013 14:57:32 +0100 Subject: [PATCH] Randomise initial polling intervals to spread out connection attempts. --- briar-core/src/net/sf/briar/plugins/PollerImpl.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/briar-core/src/net/sf/briar/plugins/PollerImpl.java b/briar-core/src/net/sf/briar/plugins/PollerImpl.java index 204547f1c9..c5ea77feab 100644 --- a/briar-core/src/net/sf/briar/plugins/PollerImpl.java +++ b/briar-core/src/net/sf/briar/plugins/PollerImpl.java @@ -36,14 +36,16 @@ class PollerImpl implements Poller, Runnable { } public synchronized void start(Collection<Plugin> plugins) { - for(Plugin plugin : plugins) schedule(plugin); + for(Plugin plugin : plugins) schedule(plugin, true); new Thread(this, "Poller").start(); } - private synchronized void schedule(Plugin plugin) { + private synchronized void schedule(Plugin plugin, boolean randomise) { if(plugin.shouldPoll()) { long now = clock.currentTimeMillis(); long interval = plugin.getPollingInterval(); + // Randomise intervals at startup to spread out connection attempts + if(randomise) interval = (long) (interval * Math.random()); pollTimes.add(new PollTime(now + interval, plugin)); } } @@ -74,7 +76,7 @@ class PollerImpl implements Poller, Runnable { p.plugin.poll(connected); } }); - schedule(p.plugin); + schedule(p.plugin, false); } else { try { wait(p.time - now); -- GitLab