diff --git a/Netch/Controllers/MainController.cs b/Netch/Controllers/MainController.cs index 2fbd73a8..0338c7ae 100644 --- a/Netch/Controllers/MainController.cs +++ b/Netch/Controllers/MainController.cs @@ -151,32 +151,33 @@ namespace Netch.Controllers private static async Task StartMode(Server server, Mode mode) { ModeController = ModeHelper.GetModeControllerByType(mode.Type, out var port, out var portName, out var portType); + + if (ModeController == null) + { + return true; + } + if (port != null) { PortCheckAndShowMessageBox((ushort) port, portName, portType); UsingPorts.Add((ushort) port); } - if (ModeController != null) + Global.MainForm.StatusText(i18N.TranslateFormat("Starting {0}", ModeController.Name)); + if (await Task.Run(() => ModeController.Start(mode))) { - Global.MainForm.StatusText(i18N.TranslateFormat("Starting {0}", ModeController.Name)); - if (await Task.Run(() => ModeController.Start(mode))) + if (ModeController is Guard guard) { - if (ModeController is Guard guard) + if (guard.Instance != null) { - if (guard.Instance != null) - { - ChildProcessTracker.AddProcess(guard.Instance); - } + ChildProcessTracker.AddProcess(guard.Instance); } - - return true; } - return false; + return true; } - return true; + return false; } /// diff --git a/Netch/Utils/Bandwidth.cs b/Netch/Utils/Bandwidth.cs index c6f5f2be..e06c8e69 100644 --- a/Netch/Utils/Bandwidth.cs +++ b/Netch/Utils/Bandwidth.cs @@ -8,6 +8,7 @@ using Microsoft.Diagnostics.Tracing.Session; using Netch.Controllers; using Netch.Models; using Netch.Servers.Shadowsocks; +using Netch.Servers.Socks5; namespace Netch.Utils { @@ -63,26 +64,28 @@ namespace Netch.Utils //var processList = Process.GetProcessesByName(ProcessName).Select(p => p.Id).ToHashSet(); var instances = new List(); - if (server.Type.Equals("Socks5") && MainController.ModeController.Name == "HTTP") + switch (MainController.ServerController) { - instances.Add(((HTTPController) MainController.ModeController).pPrivoxyController.Instance); - } - else if (MainController.ServerController != null) - { - switch (MainController.ServerController) - { - case SSController ssController when ssController.DllFlag: - instances.Add(Process.GetCurrentProcess()); - break; - case Guard instanceController: + case null: + break; + case SSController ssController when ssController.DllFlag: + instances.Add(Process.GetCurrentProcess()); + break; + case Guard instanceController: + if (instanceController.Instance != null) instances.Add(instanceController.Instance); - break; - } + break; } - else if (MainController.ModeController != null) + + if (!instances.Any()) { switch (MainController.ModeController) { + case null: + break; + case HTTPController httpController: + instances.Add(httpController.pPrivoxyController.Instance); + break; case NFController _: instances.Add(Process.GetCurrentProcess()); break;