diff --git a/briar-core/src/net/sf/briar/plugins/PollerImpl.java b/briar-core/src/net/sf/briar/plugins/PollerImpl.java index 204547f1c9faf2827d26e8a385574bedb1b5de73..c5ea77feaba4897a7a6a28fe3289b1c52eb3736b 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);