diff --git a/shadowsocks-csharp/Controller/ShadowsocksController.cs b/shadowsocks-csharp/Controller/ShadowsocksController.cs index 89d4351c..7ae00824 100644 --- a/shadowsocks-csharp/Controller/ShadowsocksController.cs +++ b/shadowsocks-csharp/Controller/ShadowsocksController.cs @@ -490,8 +490,6 @@ namespace Shadowsocks.Controller protected void Reload() { - StopPlugins(); - Encryption.RNG.Reload(); // some logic in configuration updated the config when saving, we need to read it again _config = Configuration.Load(); @@ -521,6 +519,9 @@ namespace Shadowsocks.Controller { _listener.Stop(); } + + StopPlugins(); + // don't put PrivoxyRunner.Start() before pacServer.Stop() // or bind will fail when switching bind address from 0.0.0.0 to 127.0.0.1 // though UseShellExecute is set to true now @@ -534,7 +535,7 @@ namespace Shadowsocks.Controller strategy.ReloadServers(); } - StartPlugins(); + StartPlugin(); privoxyRunner.Start(_config); TCPRelay tcpRelay = new TCPRelay(this, _config); @@ -572,13 +573,10 @@ namespace Shadowsocks.Controller Utils.ReleaseMemory(true); } - private void StartPlugins() + private void StartPlugin() { - foreach (var server in _config.configs) - { - // Early start plugin processes - GetPluginLocalEndPointIfConfigured(server); - } + var server = _config.GetCurrentServer(); + GetPluginLocalEndPointIfConfigured(server); } protected void SaveConfig(Configuration newConfig)