Browse Source

drop unexpected I2NP messages

pull/1919/head
orignal 2 years ago
parent
commit
dc265367dc
  1. 20
      libi2pd/I2NPProtocol.cpp
  2. 4
      libi2pd/Transports.cpp

20
libi2pd/I2NPProtocol.cpp

@ -785,9 +785,11 @@ namespace i2p @@ -785,9 +785,11 @@ namespace i2p
switch (typeID)
{
case eI2NPTunnelData:
if (!msg->from)
i2p::tunnel::tunnels.PostTunnelData (msg);
break;
case eI2NPTunnelGateway:
if (!msg->from)
i2p::tunnel::tunnels.PostTunnelData (msg);
break;
case eI2NPGarlic:
@ -799,11 +801,19 @@ namespace i2p @@ -799,11 +801,19 @@ namespace i2p
break;
}
case eI2NPDatabaseStore:
// forward to netDb if came directly or through exploratory tunnel as response to our request
if (!msg->from || !msg->from->GetTunnelPool () || msg->from->GetTunnelPool ()->IsExploratory ())
i2p::data::netdb.PostI2NPMsg (msg);
break;
case eI2NPDatabaseSearchReply:
case eI2NPDatabaseLookup:
// forward to netDb
i2p::data::netdb.PostI2NPMsg (msg);
break;
case eI2NPDatabaseLookup:
// forward to netDb if floodfill and came directly
if (!msg->from && i2p::context.IsFloodfill ())
i2p::data::netdb.PostI2NPMsg (msg);
break;
case eI2NPDeliveryStatus:
{
if (msg->from && msg->from->GetTunnelPool ())
@ -813,10 +823,14 @@ namespace i2p @@ -813,10 +823,14 @@ namespace i2p
break;
}
case eI2NPVariableTunnelBuild:
case eI2NPVariableTunnelBuildReply:
case eI2NPTunnelBuild:
case eI2NPTunnelBuildReply:
case eI2NPShortTunnelBuild:
// forward to tunnel thread
if (!msg->from)
i2p::tunnel::tunnels.PostTunnelData (msg);
break;
case eI2NPVariableTunnelBuildReply:
case eI2NPTunnelBuildReply:
case eI2NPShortTunnelBuildReply:
// forward to tunnel thread
i2p::tunnel::tunnels.PostTunnelData (msg);

4
libi2pd/Transports.cpp

@ -801,12 +801,12 @@ namespace transport @@ -801,12 +801,12 @@ namespace transport
if (it->second.sessions.empty () && ts > it->second.creationTime + SESSION_CREATION_TIMEOUT)
{
LogPrint (eLogWarning, "Transports: Session to peer ", it->first.ToBase64 (), " has not been created in ", SESSION_CREATION_TIMEOUT, " seconds");
if (!it->second.router)
/* if (!it->second.router)
{
// if router for ident not found mark it unreachable
auto profile = i2p::data::GetRouterProfile (it->first);
if (profile) profile->Unreachable ();
}
} */
std::unique_lock<std::mutex> l(m_PeersMutex);
it = m_Peers.erase (it);
}

Loading…
Cancel
Save