From fc38d54bcbd5fb49263b80af7706598991fc52a5 Mon Sep 17 00:00:00 2001
From: zzz <zzz@mail.i2p>
Date: Thu, 10 Feb 2011 15:21:23 +0000
Subject: [PATCH]     * I2CP: Correctly close internal connections on the
 router side             when closed by the client, was causing massive memory
 leak             for internal clients using lots of sessions (thanks sponge)

---
 core/java/src/net/i2p/internal/QueuedI2CPMessageReader.java | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/core/java/src/net/i2p/internal/QueuedI2CPMessageReader.java b/core/java/src/net/i2p/internal/QueuedI2CPMessageReader.java
index 55b29b3105..13c82cc6b5 100644
--- a/core/java/src/net/i2p/internal/QueuedI2CPMessageReader.java
+++ b/core/java/src/net/i2p/internal/QueuedI2CPMessageReader.java
@@ -42,10 +42,12 @@ public class QueuedI2CPMessageReader extends I2CPMessageReader {
                     I2CPMessage msg = null;
                     try {
                         msg = in.take();
-                        if (msg.getType() == PoisonI2CPMessage.MESSAGE_TYPE)
+                        if (msg.getType() == PoisonI2CPMessage.MESSAGE_TYPE) {
+                            _listener.disconnected(QueuedI2CPMessageReader.this);
                             cancelRunner();
-                        else
+                        } else {
                             _listener.messageReceived(QueuedI2CPMessageReader.this, msg);
+                        }
                     } catch (InterruptedException ie) {}
                 }
                 // ??? unused
-- 
GitLab