From 6d0625c409e0e41e483d216fdb20346a9463dbf1 Mon Sep 17 00:00:00 2001
From: GyDi <segydi@foxmail.com>
Date: Mon, 20 Jun 2022 01:36:56 +0800
Subject: [PATCH] fix: improve external-controller parse and log

---
 src-tauri/src/core/clash.rs   | 17 +++++++++--------
 src-tauri/src/core/service.rs |  6 +++++-
 2 files changed, 14 insertions(+), 9 deletions(-)

diff --git a/src-tauri/src/core/clash.rs b/src-tauri/src/core/clash.rs
index 242ad75..4d2cc0a 100644
--- a/src-tauri/src/core/clash.rs
+++ b/src-tauri/src/core/clash.rs
@@ -49,15 +49,16 @@ impl ClashInfo {
 
     // `external-controller` could be
     // "127.0.0.1:9090" or ":9090"
-    // "9090" or 9090 (clash do not support this)
     let server = match config.get(&key_server) {
-      Some(value) => match value {
-        Value::String(val_str) => match val_str.starts_with(":") {
-          true => Some(format!("127.0.0.1{val_str}")),
-          false => Some(val_str.clone()),
-        },
-        _ => None,
-      },
+      Some(value) => {
+        let val_str = value.as_str().unwrap_or("");
+
+        if val_str.starts_with(":") {
+          Some(format!("127.0.0.1{val_str}"))
+        } else {
+          Some(val_str.into())
+        }
+      }
       _ => None,
     };
 
diff --git a/src-tauri/src/core/service.rs b/src-tauri/src/core/service.rs
index acde126..8dbd271 100644
--- a/src-tauri/src/core/service.rs
+++ b/src-tauri/src/core/service.rs
@@ -139,7 +139,11 @@ impl Service {
     config::save_yaml(temp_path.clone(), &config, Some("# Clash Verge Temp File"))?;
 
     if info.server.is_none() {
-      bail!("failed to parse the server");
+      if info.port.is_none() {
+        bail!("failed to parse config.yaml file");
+      } else {
+        bail!("failed to parse the server");
+      }
     }
 
     let server = info.server.unwrap();
-- 
GitLab