don't create SSU session for HolePunch

pull/1645/head
orignal 3 years ago
parent 2b0d18a6d7
commit 8462d382f4

@ -1,5 +1,5 @@
/*
* Copyright (c) 2013-2020, The PurpleI2P Project
* Copyright (c) 2013-2021, The PurpleI2P Project
*
* This file is part of Purple i2pd project and licensed under BSD3
*
@ -385,7 +385,7 @@ namespace transport
auto it = sessions->find (packet->from);
if (it != sessions->end ())
session = it->second;
if (!session)
if (!session && packet->len > 0)
{
session = std::make_shared<SSUSession> (*this, packet->from);
session->WaitForConnect ();

@ -418,6 +418,7 @@ namespace transport
else
FillHeaderAndEncrypt (PAYLOAD_TYPE_RELAY_REQUEST, buf, 96, introducer.iKey, iv, introducer.iKey);
m_Server.Send (buf, 96, m_RemoteEndpoint);
LogPrint (eLogDebug, "SSU: relay request sent");
}
void SSUSession::SendSessionCreated (const uint8_t * x, bool sendRelayTag)
@ -682,6 +683,7 @@ namespace transport
LogPrint (eLogInfo, "SSU: RelayReponse connecting to endpoint ", remoteEndpoint);
if (i2p::context.GetRouterInfo ().UsesIntroducer ()) // if we are unreachable
m_Server.Send (buf, 0, remoteEndpoint); // send HolePunch
// we assume that HolePunch has been sent by this time and our SessionRequest will go through
m_Server.CreateDirectSession (it->second, remoteEndpoint, false);
}
// delete request

Loading…
Cancel
Save