diff --git a/bin/lilith/src/main.rs b/bin/lilith/src/main.rs index 470426f69..9cde6a3ef 100644 --- a/bin/lilith/src/main.rs +++ b/bin/lilith/src/main.rs @@ -39,7 +39,11 @@ use url::Url; use darkfi::{ async_daemonize, cli_desc, - net::{self, hosts::HostColor, P2p, P2pPtr}, + net::{ + self, + hosts::{HostColor, HostState}, + P2p, P2pPtr, + }, rpc::{ jsonrpc::*, server::{listen_and_serve, RequestHandler}, @@ -53,6 +57,7 @@ const CONFIG_FILE: &str = "lilith_config.toml"; const CONFIG_FILE_CONTENTS: &str = include_str!("../lilith_config.toml"); /// Interval after which the refinery happens (in seconds) +// TODO: Make this configurable const REFINERY_INTERVAL: u64 = 60; #[derive(Clone, Debug, serde::Deserialize, StructOpt, StructOptToml)] @@ -177,9 +182,17 @@ impl Lilith { } let (entry, position) = hosts.container.fetch_last(HostColor::White).await; + let url = &entry.0; let last_seen = &entry.1; + if let Err(e) = hosts.try_register(url.clone(), HostState::Refine).await { + debug!(target: "lilith", "Unable to refine addr={}, err={}", + url.clone(), e); + + continue + } + if !p2p.session_refine().handshake_node(url.clone(), p2p.clone()).await { debug!(target: "lilith", "Host {} is not responsive. Downgrading from whitelist", url); hosts.move_host(url, *last_seen, HostColor::Grey).await?; @@ -188,6 +201,8 @@ impl Lilith { continue } + debug!(target: "lilith","Peer {} is responsive. Updating last_seen", url); + // This node is active. Update the last seen field. let last_seen = UNIX_EPOCH.elapsed().unwrap().as_secs(); hosts