From 629959ad41102b62f41c30274fd06a1aae66824a Mon Sep 17 00:00:00 2001 From: DragonSlayer_14 Date: Tue, 15 Sep 2026 23:09:01 +0200 Subject: [PATCH] Fix: status verwendet keinen Fake-Hostnamen fuer die Erreichbarkeitspruefung local_reachable() reichte bei fehlgeschlagener Adressaufloesung (MAC->IP) den Platzhalter-String "unresolved" an network::is_reachable() weiter - das loeste dort einen sinnlosen ping-Aufruf gegen einen nicht existierenden Hostnamen aus, statt korrekt "nicht erreichbar" zu melden. Gibt jetzt direkt false zurueck, wenn die Adresse nicht aufgeloest werden kann. Co-Authored-By: Claude Sonnet 5 Claude-Session: https://claude.ai/code/session_01LjyzpGWECyKSBWz5DtkTGz --- src/cli/status.rs | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/src/cli/status.rs b/src/cli/status.rs index bd911be..4f42b39 100644 --- a/src/cli/status.rs +++ b/src/cli/status.rs @@ -48,8 +48,9 @@ pub async fn run(name: Option, json: bool) -> anyhow::Result<()> { name: pair.name.clone(), mount_point: pair.mount_point.display().to_string(), active, - local_source: target::local_source(&pair.local, &cfg.settings), - local_reachable: network::is_reachable(&local_src_host(&pair.local, &cfg.settings)), + local_source: target::local_source(&pair.local, &cfg.settings) + .unwrap_or_else(|_| "unresolved".to_string()), + local_reachable: local_reachable(&pair.local, &cfg.settings), cloud_source: target::cloud_source(&pair.cloud), cloud_reachable: network::is_reachable(&pair.cloud.host_or_url), } @@ -88,11 +89,16 @@ fn reachable_str(reachable: bool) -> &'static str { } } -fn local_src_host( +/// `false` wenn die Adresse (MAC->IP) gar nicht erst aufgelöst werden kann, statt den +/// Platzhalter-String `"unresolved"` an `network::is_reachable` weiterzureichen - das würde +/// dort einen sinnlosen `ping unresolved`-Aufruf gegen einen nicht existierenden Hostnamen +/// auslösen statt korrekt "nicht erreichbar" zu melden. +fn local_reachable( local: &smart_mount::config::LocalSide, settings: &smart_mount::config::GlobalSettings, -) -> String { - smart_mount::network::address::resolve_ip(&local.address, settings) - .map(|ip| ip.to_string()) - .unwrap_or_else(|_| "unresolved".to_string()) +) -> bool { + match smart_mount::network::address::resolve_ip(&local.address, settings) { + Ok(ip) => network::is_reachable(&ip.to_string()), + Err(_) => false, + } }