From a99fcfe54ff450c5080a5734b57d55040b19e58a Mon Sep 17 00:00:00 2001
From: orignal <i2porignal@yandex.ru>
Date: Sun, 26 Jun 2022 21:35:26 -0400
Subject: [PATCH] cleanup terminated sessions

---
 libi2pd/SSU2.cpp | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/libi2pd/SSU2.cpp b/libi2pd/SSU2.cpp
index 56ccfe93..5b0a55dd 100644
--- a/libi2pd/SSU2.cpp
+++ b/libi2pd/SSU2.cpp
@@ -376,6 +376,9 @@ namespace transport
 					m_LastSession->SetRemoteEndpoint (senderEndpoint);
 					m_LastSession->ProcessPeerTest (buf, len);
 				break;
+				case eSSU2SessionStateTerminated:
+					m_LastSession = nullptr;
+				break;	
 				default:
 					LogPrint (eLogWarning, "SSU2: Invalid session state ", (int)m_LastSession->GetState ());
 			}
@@ -608,7 +611,8 @@ namespace transport
 
 			for (auto it = m_Sessions.begin (); it != m_Sessions.end ();)
 			{
-				if (it->second->IsTerminationTimeoutExpired (ts))
+				if (it->second->GetState () == eSSU2SessionStateTerminated ||
+					it->second->IsTerminationTimeoutExpired (ts))
 				{
 					if (it->second->IsEstablished ())
 						it->second->TerminateByTimeout ();