mirror of
https://github.com/PurpleI2P/i2pd.git
synced 2025-01-18 12:40:00 +00:00
reduce expiration time for low bandwidth and far routers
This commit is contained in:
parent
69b0bef206
commit
575268d360
@ -654,13 +654,20 @@ namespace data
|
|||||||
// find & mark expired routers
|
// find & mark expired routers
|
||||||
if (!it.second->GetCompatibleTransports (true)) // non reachable by any transport
|
if (!it.second->GetCompatibleTransports (true)) // non reachable by any transport
|
||||||
it.second->SetUnreachable (true);
|
it.second->SetUnreachable (true);
|
||||||
else if (checkForExpiration && ts > it.second->GetTimestamp () + expirationTimeout)
|
|
||||||
it.second->SetUnreachable (true);
|
|
||||||
else if (ts + NETDB_EXPIRATION_TIMEOUT_THRESHOLD*1000LL < it.second->GetTimestamp ())
|
else if (ts + NETDB_EXPIRATION_TIMEOUT_THRESHOLD*1000LL < it.second->GetTimestamp ())
|
||||||
{
|
{
|
||||||
LogPrint (eLogWarning, "NetDb: RouterInfo is from future for ", (it.second->GetTimestamp () - ts)/1000LL, " seconds");
|
LogPrint (eLogWarning, "NetDb: RouterInfo is from future for ", (it.second->GetTimestamp () - ts)/1000LL, " seconds");
|
||||||
it.second->SetUnreachable (true);
|
it.second->SetUnreachable (true);
|
||||||
}
|
}
|
||||||
|
else if (checkForExpiration)
|
||||||
|
{
|
||||||
|
uint64_t t = expirationTimeout;
|
||||||
|
if (total > NETDB_NUM_ROUTERS_THRESHOLD && !it.second->IsHighBandwidth () && // low bandwidth router
|
||||||
|
((it.second->GetIdentHash()[0] & 0xFE) != (i2p::context.GetIdentHash ()[0] & 0xFE))) // different first 7 bits
|
||||||
|
t >>= 1; // reduce expiration time by 2 times
|
||||||
|
if (ts > it.second->GetTimestamp () + t)
|
||||||
|
it.second->SetUnreachable (true);
|
||||||
|
}
|
||||||
if (it.second->IsUnreachable () && i2p::transport::transports.IsConnected (it.second->GetIdentHash ()))
|
if (it.second->IsUnreachable () && i2p::transport::transports.IsConnected (it.second->GetIdentHash ()))
|
||||||
it.second->SetUnreachable (false); // don't expire connected router
|
it.second->SetUnreachable (false); // don't expire connected router
|
||||||
}
|
}
|
||||||
|
@ -39,6 +39,7 @@ namespace data
|
|||||||
const int NETDB_MIN_ROUTERS = 90;
|
const int NETDB_MIN_ROUTERS = 90;
|
||||||
const int NETDB_MIN_FLOODFILLS = 5;
|
const int NETDB_MIN_FLOODFILLS = 5;
|
||||||
const int NETDB_NUM_FLOODFILLS_THRESHOLD = 1500;
|
const int NETDB_NUM_FLOODFILLS_THRESHOLD = 1500;
|
||||||
|
const int NETDB_NUM_ROUTERS_THRESHOLD = 4*NETDB_NUM_FLOODFILLS_THRESHOLD;
|
||||||
const int NETDB_FLOODFILL_EXPIRATION_TIMEOUT = 60 * 60; // 1 hour, in seconds
|
const int NETDB_FLOODFILL_EXPIRATION_TIMEOUT = 60 * 60; // 1 hour, in seconds
|
||||||
const int NETDB_MIN_EXPIRATION_TIMEOUT = 90 * 60; // 1.5 hours
|
const int NETDB_MIN_EXPIRATION_TIMEOUT = 90 * 60; // 1.5 hours
|
||||||
const int NETDB_MAX_EXPIRATION_TIMEOUT = 27 * 60 * 60; // 27 hours
|
const int NETDB_MAX_EXPIRATION_TIMEOUT = 27 * 60 * 60; // 27 hours
|
||||||
|
Loading…
x
Reference in New Issue
Block a user