public class SystemProxy\r
{\r
private InternetPerConnOptionList _orgList;\r
- private string _currentUrl;\r
+ private Uri _initialUri;\r
\r
private void SaveSettings()\r
{\r
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
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