|
|
|
@ -603,6 +603,7 @@ namespace data
|
|
|
|
|
uint64_t expirationTimeout = NETDB_MAX_EXPIRATION_TIMEOUT*1000LL;
|
|
|
|
|
uint64_t ts = i2p::util::GetMillisecondsSinceEpoch();
|
|
|
|
|
auto uptime = i2p::context.GetUptime ();
|
|
|
|
|
bool isLowRate = i2p::tunnel::tunnels.GetTunnelCreationSuccessRate () < NETDB_MIN_TUNNEL_CREATION_SUCCESS_RATE;
|
|
|
|
|
// routers don't expire if less than 90 or uptime is less than 1 hour
|
|
|
|
|
bool checkForExpiration = total > NETDB_MIN_ROUTERS && uptime > 600; // 10 minutes
|
|
|
|
|
if (checkForExpiration && uptime > 3600) // 1 hour
|
|
|
|
@ -624,7 +625,7 @@ namespace data
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
// make router reachable back if too few routers or floodfills
|
|
|
|
|
if (it.second->IsUnreachable () && (total - deletedCount < NETDB_MIN_ROUTERS ||
|
|
|
|
|
if (it.second->IsUnreachable () && (total - deletedCount < NETDB_MIN_ROUTERS || isLowRate ||
|
|
|
|
|
(it.second->IsFloodfill () && totalFloodfills - deletedFloodfillsCount < NETDB_MIN_FLOODFILLS)))
|
|
|
|
|
it.second->SetUnreachable (false);
|
|
|
|
|
// find & mark expired routers
|
|
|
|
|