From 30a666c833a689745976df01e14bafbcf0a5f187 Mon Sep 17 00:00:00 2001
From: zzz <zzz@mail.i2p>
Date: Fri, 27 Sep 2013 01:50:38 +0000
Subject: [PATCH]  Streaming: Don't queue a message for an unknown connection
 on the SYN queue             if it has a send ID set, it must be for a
 recently closed connection

---
 .../java/src/net/i2p/client/streaming/PacketHandler.java | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/apps/streaming/java/src/net/i2p/client/streaming/PacketHandler.java b/apps/streaming/java/src/net/i2p/client/streaming/PacketHandler.java
index ed10b6e2ab..e528abe2c7 100644
--- a/apps/streaming/java/src/net/i2p/client/streaming/PacketHandler.java
+++ b/apps/streaming/java/src/net/i2p/client/streaming/PacketHandler.java
@@ -105,8 +105,8 @@ class PacketHandler {
                 displayPacket(packet, "RECV", "wsize " + con.getOptions().getWindowSize() + " rto " + con.getOptions().getRTO());
             receiveKnownCon(con, packet);
         } else {
-            receiveUnknownCon(packet, sendId, queueIfNoConn);
             displayPacket(packet, "UNKN", null);
+            receiveUnknownCon(packet, sendId, queueIfNoConn);
         }
         // Don't log here, wait until we have the conn to make the dumps easier to follow
         //((PacketLocal)packet).logTCPDump(true);
@@ -285,6 +285,13 @@ class PacketHandler {
                         return;
                     }
                 }
+            } else {
+                // if it has a send ID, it's almost certainly for a recently removed connection.
+                if (_log.shouldLog(Log.WARN))
+                    _log.warn("Dropping pkt w/ send ID but no con found, recently disconnected? " + packet);
+                // don't bother sending reset
+                packet.releasePayload();
+                return;
             }
             
             if (packet.isFlagSet(Packet.FLAG_SYNCHRONIZE)) {
-- 
GitLab