rework public address detection timing
This commit is contained in:
		@@ -1017,14 +1017,27 @@ impl Network {
 | 
			
		||||
                let routing_table = self.routing_table();
 | 
			
		||||
                let rth = routing_table.get_routing_table_health();
 | 
			
		||||
 | 
			
		||||
                // Need at least two entries to do this
 | 
			
		||||
                if rth.unreliable_entry_count + rth.reliable_entry_count >= 2 {
 | 
			
		||||
                // We want at least two live entries per crypto kind before we start doing this (bootstrap)
 | 
			
		||||
                let mut has_at_least_two = true;
 | 
			
		||||
                for ck in VALID_CRYPTO_KINDS {
 | 
			
		||||
                    if rth
 | 
			
		||||
                        .live_entry_counts
 | 
			
		||||
                        .get(&(RoutingDomain::PublicInternet, ck))
 | 
			
		||||
                        .copied()
 | 
			
		||||
                        .unwrap_or_default()
 | 
			
		||||
                        < 2
 | 
			
		||||
                    {
 | 
			
		||||
                        has_at_least_two = false;
 | 
			
		||||
                        break;
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                if has_at_least_two {
 | 
			
		||||
                    self.unlocked_inner.update_network_class_task.tick().await?;
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            // If we aren't resetting the network already,
 | 
			
		||||
            // check our network interfaces to see if they have changed
 | 
			
		||||
            // Check our network interfaces to see if they have changed
 | 
			
		||||
            if !self.needs_restart() {
 | 
			
		||||
                self.unlocked_inner.network_interfaces_task.tick().await?;
 | 
			
		||||
            }
 | 
			
		||||
 
 | 
			
		||||
@@ -71,12 +71,14 @@ pub type SerializedBucketMap = BTreeMap<CryptoKind, SerializedBuckets>;
 | 
			
		||||
 | 
			
		||||
#[derive(Clone, Debug, Default, Eq, PartialEq)]
 | 
			
		||||
pub struct RoutingTableHealth {
 | 
			
		||||
    /// Number of reliable (responsive) entries in the routing table
 | 
			
		||||
    /// Number of reliable (long-term responsive) entries in the routing table
 | 
			
		||||
    pub reliable_entry_count: usize,
 | 
			
		||||
    /// Number of unreliable (occasionally unresponsive) entries in the routing table
 | 
			
		||||
    pub unreliable_entry_count: usize,
 | 
			
		||||
    /// Number of dead (always unresponsive) entries in the routing table
 | 
			
		||||
    pub dead_entry_count: usize,
 | 
			
		||||
    /// Number of live (responsive) entries in the routing table per RoutingDomain and CryptoKind
 | 
			
		||||
    pub live_entry_counts: BTreeMap<(RoutingDomain, CryptoKind), usize>,
 | 
			
		||||
    /// If PublicInternet network class is valid yet
 | 
			
		||||
    pub public_internet_ready: bool,
 | 
			
		||||
    /// If LocalNetwork network class is valid yet
 | 
			
		||||
 
 | 
			
		||||
@@ -925,10 +925,13 @@ impl RoutingTableInner {
 | 
			
		||||
            NetworkClass::Invalid
 | 
			
		||||
        );
 | 
			
		||||
 | 
			
		||||
        let live_entry_counts = self.cached_entry_counts();
 | 
			
		||||
 | 
			
		||||
        RoutingTableHealth {
 | 
			
		||||
            reliable_entry_count,
 | 
			
		||||
            unreliable_entry_count,
 | 
			
		||||
            dead_entry_count,
 | 
			
		||||
            live_entry_counts,
 | 
			
		||||
            public_internet_ready,
 | 
			
		||||
            local_network_ready,
 | 
			
		||||
        }
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user