diff --git a/Netch/Controllers/MainController.cs b/Netch/Controllers/MainController.cs index 231f46ab..723f67b5 100644 --- a/Netch/Controllers/MainController.cs +++ b/Netch/Controllers/MainController.cs @@ -205,15 +205,15 @@ namespace Netch.Controllers { Global.MainForm.NatTypeStatusText(i18N.Translate("Starting NatTester")); // Thread.Sleep(1000); - var (nttResult, natType, localEnd, publicEnd) = NTTController.Start(); + var (result, localEnd, publicEnd) = NTTController.Start(); - if (nttResult) + if (!string.IsNullOrEmpty(publicEnd)) { var country = Utils.Utils.GetCityCode(publicEnd); - Global.MainForm.NatTypeStatusText(natType, country); + Global.MainForm.NatTypeStatusText(result, country); } else - Global.MainForm.NatTypeStatusText(natType); + Global.MainForm.NatTypeStatusText(result ?? "Error"); NttTested = true; }); diff --git a/Netch/Controllers/NTTController.cs b/Netch/Controllers/NTTController.cs index 57a96213..9372de4f 100644 --- a/Netch/Controllers/NTTController.cs +++ b/Netch/Controllers/NTTController.cs @@ -9,8 +9,8 @@ namespace Netch.Controllers { private string _localEnd; private string _publicEnd; - private string _natType; - private bool _nttResult; + private string _result; + private string _bindingTest; public NTTController() { @@ -22,10 +22,9 @@ namespace Netch.Controllers /// 启动 NatTypeTester /// /// - public (bool, string, string, string) Start() + public (string, string, string) Start() { - _nttResult = false; - _natType = _localEnd = _publicEnd = null; + _result = _localEnd = _publicEnd = null; try { @@ -36,7 +35,9 @@ namespace Netch.Controllers Instance.BeginOutputReadLine(); Instance.BeginErrorReadLine(); Instance.WaitForExit(); - return (_nttResult, _natType, _localEnd, _publicEnd); + if (_bindingTest == "Fail") + _result = "UdpBlocked"; + return (_result, _localEnd, _publicEnd); } catch (Exception e) { @@ -50,7 +51,7 @@ namespace Netch.Controllers // ignored } - return (false, null, null, null); + return (null, null, null); } } @@ -67,10 +68,12 @@ namespace Netch.Controllers switch (key) { case "Other address is": - case "Binding test": case "Nat mapping behavior": case "Nat filtering behavior": break; + case "Binding test": + _bindingTest = value; + break; case "Local address": _localEnd = value; break; @@ -78,11 +81,10 @@ namespace Netch.Controllers _publicEnd = value; break; case "result": - _natType = value; - _nttResult = true; + _result = value; break; default: - _natType = str.Last(); + _result = str.Last(); break; } }