diff --git a/bramble-core/src/main/java/org/briarproject/bramble/connection/ConnectionRegistryImpl.java b/bramble-core/src/main/java/org/briarproject/bramble/connection/ConnectionRegistryImpl.java index 3563c4850..9aa92d646 100644 --- a/bramble-core/src/main/java/org/briarproject/bramble/connection/ConnectionRegistryImpl.java +++ b/bramble-core/src/main/java/org/briarproject/bramble/connection/ConnectionRegistryImpl.java @@ -42,6 +42,7 @@ class ConnectionRegistryImpl implements ConnectionRegistry { private final EventBus eventBus; private final Map> betterTransports; + private final Map> worseTransports; private final Object lock = new Object(); @GuardedBy("lock") @@ -53,21 +54,32 @@ class ConnectionRegistryImpl implements ConnectionRegistry { ConnectionRegistryImpl(EventBus eventBus, PluginConfig pluginConfig) { this.eventBus = eventBus; betterTransports = new HashMap<>(); - for (Pair pair : - pluginConfig.getTransportPreferences()) { - TransportId better = pair.getFirst(); - TransportId worse = pair.getSecond(); - List list = betterTransports.get(worse); - if (list == null) { - list = new ArrayList<>(); - betterTransports.put(worse, list); - } - list.add(better); - } + worseTransports = new HashMap<>(); + initTransportPreferences(pluginConfig.getTransportPreferences()); contactConnections = new HashMap<>(); connectedPendingContacts = new HashSet<>(); } + private void initTransportPreferences( + List> prefs) { + for (Pair pair : prefs) { + TransportId better = pair.getFirst(); + TransportId worse = pair.getSecond(); + List betterList = betterTransports.get(worse); + if (betterList == null) { + betterList = new ArrayList<>(); + betterTransports.put(worse, betterList); + } + betterList.add(better); + List worseList = worseTransports.get(better); + if (worseList == null) { + worseList = new ArrayList<>(); + worseTransports.put(better, worseList); + } + worseList.add(worse); + } + } + @Override public void registerConnection(ContactId c, TransportId t, boolean incoming) {