mirror of
https://github.com/PurpleI2P/i2pd.git
synced 2025-03-21 16:49:10 +01:00
make sure to use ipv4 introducers only
This commit is contained in:
parent
988007a8c9
commit
da8a6a4c2b
2 changed files with 20 additions and 11 deletions
25
SSU.cpp
25
SSU.cpp
|
@ -340,21 +340,30 @@ namespace transport
|
||||||
// we might have a session to introducer already
|
// we might have a session to introducer already
|
||||||
for (int i = 0; i < numIntroducers; i++)
|
for (int i = 0; i < numIntroducers; i++)
|
||||||
{
|
{
|
||||||
introducer = &(address->introducers[i]);
|
auto intr = &(address->introducers[i]);
|
||||||
it = m_Sessions.find (boost::asio::ip::udp::endpoint (introducer->iHost, introducer->iPort));
|
boost::asio::ip::udp::endpoint ep (intr->iHost, intr->iPort);
|
||||||
if (it != m_Sessions.end ())
|
if (ep.address ().is_v4 ()) // ipv4 only
|
||||||
{
|
{
|
||||||
introducerSession = it->second;
|
if (!introducer) introducer = intr; // we pick first one for now
|
||||||
break;
|
it = m_Sessions.find (ep);
|
||||||
|
if (it != m_Sessions.end ())
|
||||||
|
{
|
||||||
|
introducerSession = it->second;
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (!introducer)
|
||||||
|
{
|
||||||
|
LogPrint (eLogWarning, "Can't connect to unreachable router. No ipv4 introducers presented");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (introducerSession) // session found
|
if (introducerSession) // session found
|
||||||
LogPrint ("Session to introducer already exists");
|
LogPrint (eLogInfo, "Session to introducer already exists");
|
||||||
else // create new
|
else // create new
|
||||||
{
|
{
|
||||||
LogPrint ("Creating new session to introducer");
|
LogPrint (eLogInfo, "Creating new session to introducer");
|
||||||
introducer = &(address->introducers[0]); // TODO:
|
|
||||||
boost::asio::ip::udp::endpoint introducerEndpoint (introducer->iHost, introducer->iPort);
|
boost::asio::ip::udp::endpoint introducerEndpoint (introducer->iHost, introducer->iPort);
|
||||||
introducerSession = std::make_shared<SSUSession> (*this, introducerEndpoint, router);
|
introducerSession = std::make_shared<SSUSession> (*this, introducerEndpoint, router);
|
||||||
m_Sessions[introducerEndpoint] = introducerSession;
|
m_Sessions[introducerEndpoint] = introducerSession;
|
||||||
|
|
|
@ -384,7 +384,7 @@ namespace transport
|
||||||
s.Insert (address->host.to_v6 ().to_bytes ().data (), 16); // our IP V6
|
s.Insert (address->host.to_v6 ().to_bytes ().data (), 16); // our IP V6
|
||||||
s.Insert<uint16_t> (htobe16 (address->port)); // our port
|
s.Insert<uint16_t> (htobe16 (address->port)); // our port
|
||||||
uint32_t relayTag = 0;
|
uint32_t relayTag = 0;
|
||||||
if (i2p::context.GetRouterInfo ().IsIntroducer ())
|
if (i2p::context.GetRouterInfo ().IsIntroducer () && !IsV6 ())
|
||||||
{
|
{
|
||||||
RAND_bytes((uint8_t *)&relayTag, 4);
|
RAND_bytes((uint8_t *)&relayTag, 4);
|
||||||
if (!relayTag) relayTag = 1;
|
if (!relayTag) relayTag = 1;
|
||||||
|
|
Loading…
Add table
Reference in a new issue