Explorar el Código

fix: runtime error

MystiPanda hace 11 meses
padre
commit
0342477733
Se han modificado 2 ficheros con 22 adiciones y 1 borrados
  1. 1 0
      src-tauri/src/core/clash_api.rs
  2. 21 1
      src-tauri/src/core/core.rs

+ 1 - 0
src-tauri/src/core/clash_api.rs

@@ -85,6 +85,7 @@ fn clash_client_info() -> Result<(String, HeaderMap)> {
 }
 
 /// 缩短clash的日志
+#[allow(dead_code)]
 pub fn parse_log(log: String) -> String {
     if log.starts_with("time=") && log.len() > 33 {
         return (log[33..]).to_owned();

+ 21 - 1
src-tauri/src/core/core.rs

@@ -76,7 +76,24 @@ impl CoreManager {
             None => false,
         };
 
-        self.stop_core()?; // 先停止
+        // 关闭tun模式
+        let mut disable = Mapping::new();
+        let mut tun = Mapping::new();
+        tun.insert("enable".into(), false.into());
+        disable.insert("tun".into(), tun.into());
+        log::debug!(target: "app", "disable tun mode");
+        let _ = clash_api::patch_configs(&disable).await;
+
+        let mut system = System::new();
+        system.refresh_all();
+        let procs = system.processes_by_name("verge-mihomo");
+        for proc in procs {
+            log::debug!(target: "app", "kill all clash process");
+            #[cfg(target_os = "windows")]
+            proc.kill();
+            #[cfg(not(target_os = "windows"))]
+            proc.kill_with(sysinfo::Signal::Interrupt);
+        }
 
         if *self.use_service_mode.lock() {
             log::debug!(target: "app", "stop the core by service");
@@ -232,7 +249,10 @@ impl CoreManager {
         let procs = system.processes_by_name("verge-mihomo");
         for proc in procs {
             log::debug!(target: "app", "kill all clash process");
+            #[cfg(target_os = "windows")]
             proc.kill();
+            #[cfg(not(target_os = "windows"))]
+            proc.kill_with(sysinfo::Signal::Interrupt);
         }
         Ok(())
     }