|
|
|
@ -375,7 +375,16 @@ namespace transport
@@ -375,7 +375,16 @@ namespace transport
|
|
|
|
|
m_Server.RemoveNTCP2Session (shared_from_this ()); |
|
|
|
|
m_SendQueue.clear (); |
|
|
|
|
m_SendQueueSize = 0; |
|
|
|
|
LogPrint (eLogDebug, "NTCP2: Session terminated"); |
|
|
|
|
auto remoteIdentity = GetRemoteIdentity (); |
|
|
|
|
if (remoteIdentity) |
|
|
|
|
{ |
|
|
|
|
LogPrint (eLogDebug, "NTCP2: Session with ", GetRemoteEndpoint (), |
|
|
|
|
" (", i2p::data::GetIdentHashAbbreviation (GetRemoteIdentity ()->GetIdentHash ()), ") terminated"); |
|
|
|
|
} |
|
|
|
|
else |
|
|
|
|
{ |
|
|
|
|
LogPrint (eLogDebug, "NTCP2: Session with ", GetRemoteEndpoint (), " terminated"); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -691,11 +700,13 @@ namespace transport
@@ -691,11 +700,13 @@ namespace transport
|
|
|
|
|
i2p::data::RouterInfo ri (buf.data () + 4, size - 1); // 1 byte block type + 2 bytes size + 1 byte flag
|
|
|
|
|
if (ri.IsUnreachable ()) |
|
|
|
|
{ |
|
|
|
|
LogPrint (eLogError, "NTCP2: Signature verification failed in SessionConfirmed"); |
|
|
|
|
LogPrint (eLogError, "NTCP2: RouterInfo verification failed in SessionConfirmed from ", GetRemoteEndpoint ()); |
|
|
|
|
SendTerminationAndTerminate (eNTCP2RouterInfoSignatureVerificationFail); |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
auto ts = i2p::util::GetMillisecondsSinceEpoch (); |
|
|
|
|
LogPrint(eLogDebug, "NTCP2: SessionConfirmed from ", GetRemoteEndpoint (), |
|
|
|
|
" (", i2p::data::GetIdentHashAbbreviation (ri.GetIdentHash ()), ")"); |
|
|
|
|
auto ts = i2p::util::GetMillisecondsSinceEpoch (); |
|
|
|
|
if (ts > ri.GetTimestamp () + i2p::data::NETDB_MIN_EXPIRATION_TIMEOUT*1000LL) // 90 minutes
|
|
|
|
|
{ |
|
|
|
|
LogPrint (eLogError, "NTCP2: RouterInfo is too old in SessionConfirmed for ", (ts - ri.GetTimestamp ())/1000LL, " seconds"); |
|
|
|
@ -1409,7 +1420,8 @@ namespace transport
@@ -1409,7 +1420,8 @@ namespace transport
|
|
|
|
|
LogPrint (eLogError, "NTCP2: Can't connect to unspecified address"); |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
LogPrint (eLogDebug, "NTCP2: Connecting to ", conn->GetRemoteEndpoint ()); |
|
|
|
|
LogPrint (eLogDebug, "NTCP2: Connecting to ", conn->GetRemoteEndpoint (), |
|
|
|
|
" (", i2p::data::GetIdentHashAbbreviation (conn->GetRemoteIdentity ()->GetIdentHash ()), ")"); |
|
|
|
|
GetService ().post([this, conn]() |
|
|
|
|
{ |
|
|
|
|
if (this->AddNTCP2Session (conn)) |
|
|
|
@ -1465,7 +1477,8 @@ namespace transport
@@ -1465,7 +1477,8 @@ namespace transport
|
|
|
|
|
} |
|
|
|
|
else |
|
|
|
|
{ |
|
|
|
|
LogPrint (eLogDebug, "NTCP2: Connected to ", conn->GetRemoteEndpoint ()); |
|
|
|
|
LogPrint (eLogDebug, "NTCP2: Connected to ", conn->GetRemoteEndpoint (), |
|
|
|
|
" (", i2p::data::GetIdentHashAbbreviation (conn->GetRemoteIdentity ()->GetIdentHash ()), ")"); |
|
|
|
|
conn->ClientLogin (); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|