From 657f13af29a0ad9d5578ac3befe4edb38858eb7c Mon Sep 17 00:00:00 2001
From: zzz <zzz@mail.i2p>
Date: Wed, 3 Jun 2015 17:25:25 +0000
Subject: [PATCH] Remove ConnectionManager ref from PacketQueue

---
 .../src/net/i2p/client/streaming/impl/Connection.java  |  3 +++
 .../i2p/client/streaming/impl/ConnectionManager.java   |  2 +-
 .../src/net/i2p/client/streaming/impl/PacketQueue.java | 10 +++++-----
 3 files changed, 9 insertions(+), 6 deletions(-)

diff --git a/apps/streaming/java/src/net/i2p/client/streaming/impl/Connection.java b/apps/streaming/java/src/net/i2p/client/streaming/impl/Connection.java
index e25e4707cd..c3b63d756e 100644
--- a/apps/streaming/java/src/net/i2p/client/streaming/impl/Connection.java
+++ b/apps/streaming/java/src/net/i2p/client/streaming/impl/Connection.java
@@ -873,6 +873,9 @@ class Connection {
      */
     public void setOptions(ConnectionOptions opts) { _options = opts; }
         
+    /** @since 0.9.21 */
+    public ConnectionManager getConnectionManager() { return _connectionManager; }
+
     public I2PSession getSession() { return _connectionManager.getSession(); }
     public I2PSocketFull getSocket() { return _socket; }
     public void setSocket(I2PSocketFull socket) { _socket = socket; }
diff --git a/apps/streaming/java/src/net/i2p/client/streaming/impl/ConnectionManager.java b/apps/streaming/java/src/net/i2p/client/streaming/impl/ConnectionManager.java
index 3c98089453..55d9522bf2 100644
--- a/apps/streaming/java/src/net/i2p/client/streaming/impl/ConnectionManager.java
+++ b/apps/streaming/java/src/net/i2p/client/streaming/impl/ConnectionManager.java
@@ -88,7 +88,7 @@ class ConnectionManager {
         // As of 0.9.1, listen on configured port (default 0 = all)
         int protocol = defaultOptions.getEnforceProtocol() ? I2PSession.PROTO_STREAMING : I2PSession.PROTO_ANY;
         _session.addMuxedSessionListener(_messageHandler, protocol, defaultOptions.getLocalPort());
-        _outboundQueue = new PacketQueue(_context, _session, this);
+        _outboundQueue = new PacketQueue(_context, _session);
         _recentlyClosed = new LHMCache<Long, Object>(32);
         /** Socket timeout for accept() */
         _soTimeout = -1;
diff --git a/apps/streaming/java/src/net/i2p/client/streaming/impl/PacketQueue.java b/apps/streaming/java/src/net/i2p/client/streaming/impl/PacketQueue.java
index 51b8baef73..b2558b1741 100644
--- a/apps/streaming/java/src/net/i2p/client/streaming/impl/PacketQueue.java
+++ b/apps/streaming/java/src/net/i2p/client/streaming/impl/PacketQueue.java
@@ -29,7 +29,6 @@ class PacketQueue implements SendMessageStatusListener {
     private final I2PAppContext _context;
     private final Log _log;
     private final I2PSession _session;
-    private final ConnectionManager _connectionManager;
     private final ByteCache _cache = ByteCache.getInstance(64, 36*1024);
     private final Map<Long, Connection> _messageStatusMap;
     private volatile boolean _dead;
@@ -46,10 +45,9 @@ class PacketQueue implements SendMessageStatusListener {
     private static final long REMOVE_EXPIRED_TIME = 67*1000;
     private static final boolean ENABLE_STATUS_LISTEN = true;
 
-    public PacketQueue(I2PAppContext context, I2PSession session, ConnectionManager mgr) {
+    public PacketQueue(I2PAppContext context, I2PSession session) {
         _context = context;
         _session = session;
-        _connectionManager = mgr;
         _log = context.logManager().getLog(PacketQueue.class);
         _messageStatusMap = new ConcurrentHashMap<Long, Connection>(16);
         new RemoveExpired();
@@ -213,8 +211,10 @@ class PacketQueue implements SendMessageStatusListener {
                 _log.debug(msg);
             }
             Connection c = packet.getConnection();
-            String suffix = (c != null ? "wsize " + c.getOptions().getWindowSize() + " rto " + c.getOptions().getRTO() : null);
-            _connectionManager.getPacketHandler().displayPacket(packet, "SEND", suffix);
+            if (c != null) {
+                String suffix = "wsize " + c.getOptions().getWindowSize() + " rto " + c.getOptions().getRTO();
+                c.getConnectionManager().getPacketHandler().displayPacket(packet, "SEND", suffix);
+            }
             if (I2PSocketManagerFull.pcapWriter != null &&
                 _context.getBooleanProperty(I2PSocketManagerFull.PROP_PCAP))
                 packet.logTCPDump();
-- 
GitLab