diff --git a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnel.java b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnel.java index 2788e21138..d850823939 100644 --- a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnel.java +++ b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnel.java @@ -78,7 +78,7 @@ public class I2PTunnel extends EventDispatcherImpl implements Logging { private static long __tunnelId = 0; private final long _tunnelId; private final Properties _clientOptions; - private final List _sessions; + private final Set _sessions; public static final int PACKET_DELAY = 100; @@ -120,7 +120,7 @@ public class I2PTunnel extends EventDispatcherImpl implements Logging { // as of 0.8.4, include context properties Properties p = _context.getProperties(); _clientOptions = p; - _sessions = new ArrayList(1); + _sessions = new CopyOnWriteArraySet(); addConnectionEventListener(lsnr); boolean gui = true; @@ -192,22 +192,17 @@ public class I2PTunnel extends EventDispatcherImpl implements Logging { /** @return non-null */ List getSessions() { - synchronized (_sessions) { return new ArrayList(_sessions); - } } + void addSession(I2PSession session) { if (session == null) return; - synchronized (_sessions) { - if (!_sessions.contains(session)) - _sessions.add(session); - } + _sessions.add(session); } + void removeSession(I2PSession session) { if (session == null) return; - synchronized (_sessions) { - _sessions.remove(session); - } + _sessions.remove(session); } public Properties getClientOptions() { return _clientOptions; } diff --git a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/TunnelController.java b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/TunnelController.java index 1f1f9e971d..1dc1a32a97 100644 --- a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/TunnelController.java +++ b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/TunnelController.java @@ -28,10 +28,10 @@ import net.i2p.util.SecureFileOutputStream; * */ public class TunnelController implements Logging { - private Log _log; + private final Log _log; private Properties _config; - private I2PTunnel _tunnel; - private List _messages; + private final I2PTunnel _tunnel; + private final List _messages; private List _sessions; private boolean _running; private boolean _starting;