From 38e43bc9c8e7d304ee7b278b5fa24fbbb3e05f4e Mon Sep 17 00:00:00 2001
From: orignal <i2porignal@yandex.ru>
Date: Thu, 23 Jun 2022 08:18:35 -0400
Subject: [PATCH] check Charlie's address for PeerTest msg 4

---
 libi2pd/SSU2Session.cpp | 21 ++++++++++++++-------
 1 file changed, 14 insertions(+), 7 deletions(-)

diff --git a/libi2pd/SSU2Session.cpp b/libi2pd/SSU2Session.cpp
index cf776f0a..778b9bba 100644
--- a/libi2pd/SSU2Session.cpp
+++ b/libi2pd/SSU2Session.cpp
@@ -358,7 +358,7 @@ namespace transport
 			}		
 			default:
 			{
-				LogPrint (eLogWarning, "SSU2: Unexpected message type ", (int)header.h.type);
+				LogPrint (eLogWarning, "SSU2: Unexpected message type ", (int)header.h.type, " from ", m_RemoteEndpoint);
 				return false;
 			}
 		}
@@ -1604,17 +1604,24 @@ namespace transport
 								it->second.first->SetRemoteIdentity (r->GetIdentity ());
 								auto addr = r->GetSSU2Address (m_Address->IsV4 ());
 								if (addr)
+								{	
 									it->second.first->m_Address = addr;
-								if (it->second.first->m_State == eSSU2SessionStatePeerTestReceived)
-								{
-									// msg 5 already received. send msg 6 
-									it->second.first->m_State = eSSU2SessionStatePeerTest;
-									it->second.first->SendPeerTest (6, buf + offset, len - offset, addr->i);
+									if (it->second.first->m_State == eSSU2SessionStatePeerTestReceived)
+									{
+										// msg 5 already received. send msg 6 
+										it->second.first->m_State = eSSU2SessionStatePeerTest;
+										it->second.first->SendPeerTest (6, buf + offset, len - offset, addr->i);
+									}
 								}
+								else
+								{
+									LogPrint (eLogWarning, "SSU2: Peer test 4 address not found");
+									it->second.first->Terminate ();
+								}	
 							}
 							else
 							{	
-								LogPrint (eLogInfo, "SSU2: Peer test 4 signature verification failed");
+								LogPrint (eLogWarning, "SSU2: Peer test 4 signature verification failed");
 								it->second.first->Terminate ();
 							}	
 						}