diff --git a/shadowsocks-csharp/View/MenuViewController.cs b/shadowsocks-csharp/View/MenuViewController.cs index c2e74827..6170940a 100755 --- a/shadowsocks-csharp/View/MenuViewController.cs +++ b/shadowsocks-csharp/View/MenuViewController.cs @@ -451,6 +451,7 @@ void updateFreeNodeChecker_NewFreeNodeFound(object sender, EventArgs e) // import all, find difference { Dictionary old_servers = new Dictionary(); + Dictionary old_insert_servers = new Dictionary(); if (!String.IsNullOrEmpty(lastGroup)) { for (int i = config.configs.Count - 1; i >= 0; --i) @@ -467,15 +468,30 @@ void updateFreeNodeChecker_NewFreeNodeFound(object sender, EventArgs e) { Server server = new Server(url, curGroup); bool match = false; - foreach (KeyValuePair pair in old_servers) + if (!match) + { + foreach (KeyValuePair pair in old_insert_servers) + { + if (server.isMatchServer(pair.Value)) + { + match = true; + break; + } + } + } + old_insert_servers[server.id] = server; + if (!match) { - if (server.isMatchServer(pair.Value)) + foreach (KeyValuePair pair in old_servers) { - match = true; - old_servers.Remove(pair.Key); - pair.Value.CopyServerInfo(server); - ++count; - break; + if (server.isMatchServer(pair.Value)) + { + match = true; + old_servers.Remove(pair.Key); + pair.Value.CopyServerInfo(server); + ++count; + break; + } } } if (!match)