diff --git a/common/wireguard/src/peer_controller.rs b/common/wireguard/src/peer_controller.rs index 7a48a20857d..ad7628c8b8b 100644 --- a/common/wireguard/src/peer_controller.rs +++ b/common/wireguard/src/peer_controller.rs @@ -64,14 +64,19 @@ impl PeerController { let timeout_check_interval = tokio_stream::wrappers::IntervalStream::new( tokio::time::interval(DEFAULT_PEER_TIMEOUT_CHECK), ); - let active_peers = peers + let active_peers: HashMap = peers .into_iter() .map(|peer| (peer.public_key.clone(), peer)) .collect(); - let suspended_peers = suspended_peers + let suspended_peers: HashMap = suspended_peers .into_iter() .map(|peer| (peer.public_key.clone(), peer)) .collect(); + let last_seen_bandwidth = active_peers + .iter() + .map(|(k, p)| (k.clone(), p.rx_bytes + p.tx_bytes)) + .chain(suspended_peers.keys().map(|k| (k.clone(), 0))) + .collect(); PeerController { storage, @@ -81,7 +86,7 @@ impl PeerController { timeout_check_interval, active_peers, suspended_peers, - last_seen_bandwidth: HashMap::new(), + last_seen_bandwidth, } } @@ -192,6 +197,7 @@ impl PeerController { log::error!("Could not configure peer: {:?}", e); false } else { + self.last_seen_bandwidth.insert(peer.public_key.clone(), peer.rx_bytes + peer.tx_bytes); self.active_peers.insert(peer.public_key.clone(), peer); true };