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 a939f706bbb44230d8138e8c5b8ea2f7b077c6da..6b13afc763697a06f9b1880663c5c0dbcbbdd3d1 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();