1
0
mirror of https://github.com/PurpleI2P/i2pd.git synced 2025-02-07 03:34:15 +00:00

router with expired introducer is still valid

This commit is contained in:
orignal 2021-07-16 20:12:41 -04:00
parent f4902e6642
commit a37cf058cd
2 changed files with 9 additions and 7 deletions

View File

@ -473,14 +473,15 @@ namespace data
bool NetDb::LoadRouterInfo (const std::string & path) bool NetDb::LoadRouterInfo (const std::string & path)
{ {
auto r = std::make_shared<RouterInfo>(path); auto r = std::make_shared<RouterInfo>(path);
if (r->GetRouterIdentity () && !r->IsUnreachable () && if (r->GetRouterIdentity () && !r->IsUnreachable () && r->HasValidAddresses ())
(r->IsReachable () || !r->IsSSU (false) || m_LastLoad < r->GetTimestamp () + NETDB_INTRODUCEE_EXPIRATION_TIMEOUT*1000LL)) // 1 hour {
{
r->DeleteBuffer (); r->DeleteBuffer ();
r->ClearProperties (); // properties are not used for regular routers r->ClearProperties (); // properties are not used for regular routers
m_RouterInfos[r->GetIdentHash ()] = r; if (m_RouterInfos.emplace (r->GetIdentHash (), r).second)
if (r->IsFloodfill () && r->IsReachable ()) // floodfill must be reachable {
m_Floodfills.push_back (r); if (r->IsFloodfill () && r->IsEligibleFloodfill ())
m_Floodfills.push_back (r);
}
} }
else else
{ {

View File

@ -343,7 +343,8 @@ namespace data
int numValid = 0; int numValid = 0;
for (auto& it: address->ssu->introducers) for (auto& it: address->ssu->introducers)
{ {
if ((!it.iExp || ts <= it.iExp) && it.iPort > 0 && if (!it.iExp) it.iExp = m_Timestamp/1000 + NETDB_INTRODUCEE_EXPIRATION_TIMEOUT;
if (ts <= it.iExp && it.iPort > 0 &&
((it.iHost.is_v4 () && address->IsV4 ()) || (it.iHost.is_v6 () && address->IsV6 ()))) ((it.iHost.is_v4 () && address->IsV4 ()) || (it.iHost.is_v6 () && address->IsV6 ())))
numValid++; numValid++;
else else