|
|
@ -603,6 +603,7 @@ namespace data |
|
|
|
uint64_t expirationTimeout = NETDB_MAX_EXPIRATION_TIMEOUT*1000LL; |
|
|
|
uint64_t expirationTimeout = NETDB_MAX_EXPIRATION_TIMEOUT*1000LL; |
|
|
|
uint64_t ts = i2p::util::GetMillisecondsSinceEpoch(); |
|
|
|
uint64_t ts = i2p::util::GetMillisecondsSinceEpoch(); |
|
|
|
auto uptime = i2p::context.GetUptime (); |
|
|
|
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
|
|
|
|
// 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
|
|
|
|
bool checkForExpiration = total > NETDB_MIN_ROUTERS && uptime > 600; // 10 minutes
|
|
|
|
if (checkForExpiration && uptime > 3600) // 1 hour
|
|
|
|
if (checkForExpiration && uptime > 3600) // 1 hour
|
|
|
@ -624,7 +625,7 @@ namespace data |
|
|
|
continue; |
|
|
|
continue; |
|
|
|
} |
|
|
|
} |
|
|
|
// make router reachable back if too few routers or floodfills
|
|
|
|
// 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->IsFloodfill () && totalFloodfills - deletedFloodfillsCount < NETDB_MIN_FLOODFILLS))) |
|
|
|
it.second->SetUnreachable (false); |
|
|
|
it.second->SetUnreachable (false); |
|
|
|
// find & mark expired routers
|
|
|
|
// find & mark expired routers
|
|
|
|