From 05d60d70e2263e01e77169200a95be947e11bc17 Mon Sep 17 00:00:00 2001
From: zzz <zzz@i2pmail.org>
Date: Sat, 17 Dec 2022 09:17:55 -0500
Subject: [PATCH] SSU2: Immediately remove establish state from
 EstablishmentManager on fatal error

to free up space and prevent problems handling additional packets
---
 .../net/i2p/router/transport/udp/EstablishmentManager.java   | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/router/java/src/net/i2p/router/transport/udp/EstablishmentManager.java b/router/java/src/net/i2p/router/transport/udp/EstablishmentManager.java
index a939f706bb..6b13afc763 100644
--- a/router/java/src/net/i2p/router/transport/udp/EstablishmentManager.java
+++ b/router/java/src/net/i2p/router/transport/udp/EstablishmentManager.java
@@ -775,6 +775,8 @@ class EstablishmentManager {
             } catch (GeneralSecurityException gse) {
                 if (_log.shouldWarn())
                     _log.warn("Corrupt Session/Token Request after Retry from: " + state, gse);
+                // state called fail()
+                _inboundStates.remove(state.getRemoteHostId());
                 return;
             }
         }
@@ -881,6 +883,7 @@ class EstablishmentManager {
             if (_log.shouldWarn())
                 _log.warn("Corrupt Session Confirmed on: " + state, gse);
             // state called fail()
+            _inboundStates.remove(state.getRemoteHostId());
             return;
         }
         InboundEstablishState.InboundState istate = state.getState();
@@ -933,6 +936,7 @@ class EstablishmentManager {
             if (_log.shouldWarn())
                 _log.warn("Corrupt Session Created on: " + state, gse);
             // state called fail()
+            _outboundStates.remove(state.getRemoteHostId());
             return;
         }
         notifyActivity();
@@ -953,6 +957,7 @@ class EstablishmentManager {
             if (_log.shouldWarn())
                 _log.warn("Corrupt Retry from: " + state, gse);
             // state called fail()
+            _outboundStates.remove(state.getRemoteHostId());
             return;
         }
         notifyActivity();
-- 
GitLab