diff --git a/core/java/src/net/i2p/internal/QueuedI2CPMessageReader.java b/core/java/src/net/i2p/internal/QueuedI2CPMessageReader.java
index 55b29b3105ac043f56d072209ce02ca26574a5e6..13c82cc6b566cb98ca2735632ad95c6fccc57fe1 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