diff --git a/easytier/src/dns/client.rs b/easytier/src/dns/client.rs index 36b0884a..9838f06b 100644 --- a/easytier/src/dns/client.rs +++ b/easytier/src/dns/client.rs @@ -65,17 +65,18 @@ impl DnsClient { rpc: &mut StandAloneClient, heartbeat: &mut HeartbeatRequest, ) -> anyhow::Result<()> { - let request = if self.mgr.dirty.swap(false, Ordering::Release) { - let snapshot = self.mgr.snapshot(); - heartbeat.digest = snapshot.digest(); - heartbeat.snapshot = Some(snapshot); - heartbeat.clone() - } else { - let snapshot = heartbeat.snapshot.take(); - let request = heartbeat.clone(); - heartbeat.snapshot = snapshot; - request - }; + let request = + if heartbeat.snapshot.is_none() || self.mgr.dirty.swap(false, Ordering::Release) { + let snapshot = self.mgr.snapshot(); + heartbeat.digest = snapshot.digest(); + heartbeat.snapshot = Some(snapshot); + heartbeat.clone() + } else { + let snapshot = heartbeat.snapshot.take(); + let request = heartbeat.clone(); + heartbeat.snapshot = snapshot; + request + }; let client = rpc .scoped_client::>("".to_string())