From 1dbe5eac55f79d48ed3a69c6d19d1962f5a764b3 Mon Sep 17 00:00:00 2001 From: Nathan Freitas Date: Mon, 25 Jan 2016 15:45:36 -0500 Subject: [PATCH] make bridge allocation shuffle randomly to distribute load inspired by this work: https://trac.torproject.org/projects/tor/ticket/18113 we don't want all users to start with the same bridges in the same order --- src/org/torproject/android/OrbotMainActivity.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/org/torproject/android/OrbotMainActivity.java b/src/org/torproject/android/OrbotMainActivity.java index e020dc2d..ae9a8dc9 100644 --- a/src/org/torproject/android/OrbotMainActivity.java +++ b/src/org/torproject/android/OrbotMainActivity.java @@ -10,7 +10,9 @@ import java.net.URLDecoder; import java.net.URLEncoder; import java.text.NumberFormat; import java.util.ArrayList; +import java.util.Collections; import java.util.Locale; +import java.util.Random; import java.util.StringTokenizer; import org.json.JSONArray; @@ -1384,7 +1386,7 @@ public class OrbotMainActivity extends AppCompatActivity while(st.hasMoreTokens()) sbConfig.append(st.nextToken()).append(' '); - b.config = sbConfig.toString(); + b.config = sbConfig.toString().trim(); alBridges.add(b); @@ -1404,6 +1406,11 @@ public class OrbotMainActivity extends AppCompatActivity { StringBuffer sbConfig = new StringBuffer (); + //we should randomly sort alBridges so we don't have the same bridge order each time + long seed = System.nanoTime(); + Collections.shuffle(alBridges, new Random(seed)); + + //now go through the list to find the bridges we want for (Bridge b : alBridges) { if (b.type.equals(type))