OSDN Git Service

プロキシ設定を復旧しない条件を緩和する
authorKazuhiro Fujieda <fujieda@users.osdn.me>
Thu, 8 Feb 2018 12:32:37 +0000 (21:32 +0900)
committerKazuhiro Fujieda <fujieda@users.osdn.me>
Thu, 8 Feb 2018 12:32:37 +0000 (21:32 +0900)
KancolleSniffer/SystemProxy.cs

index d8cd87b..d49bfa1 100644 (file)
@@ -22,7 +22,7 @@ namespace KancolleSniffer
     public class SystemProxy\r
     {\r
         private InternetPerConnOptionList _orgList;\r
-        private string _currentUrl;\r
+        private Uri _initialUri;\r
 \r
         private void SaveSettings()\r
         {\r
@@ -54,7 +54,8 @@ namespace KancolleSniffer
             SaveSettings();\r
             var flagValue = new InternetPerConnOptionValue {dwValue = (int)PerConnFlags.PROXY_TYPE_AUTO_PROXY_URL};\r
             var urlValue = new InternetPerConnOptionValue {pszValue = Marshal.StringToHGlobalAuto(url)};\r
-            _currentUrl = url;\r
+            if (_initialUri == null)\r
+                Uri.TryCreate(url, UriKind.Absolute, out _initialUri);\r
             var opts = new[]\r
             {\r
                 new InternetPerConnOption {dwOption = PerConnOption.INTERNET_PER_CONN_FLAGS, Value = flagValue},\r
@@ -85,8 +86,8 @@ namespace KancolleSniffer
             var size = Marshal.SizeOf(typeof(InternetPerConnOption));\r
             var urlOpt = (InternetPerConnOption)\r
                 Marshal.PtrToStructure((IntPtr)((long)_orgList.pOptions + size), typeof(InternetPerConnOption));\r
-            var orgUrl = Marshal.PtrToStringUni(urlOpt.Value.pszValue);\r
-            if (orgUrl == _currentUrl) // The restoration was sikipped or failed at last time.\r
+            Uri.TryCreate(Marshal.PtrToStringUni(urlOpt.Value.pszValue) ?? "", UriKind.Absolute, out var orgUri);\r
+            if (orgUri?.Authority == _initialUri?.Authority) // The restoration was sikipped or failed at last time.\r
             {\r
                 // Unselect the Use automatic configration script check box.\r
                 var flagsOpt =\r