public WinHttpWebProxyFinder(AutoWebProxyScriptEngine engine)
            : base(engine)
        {
            // Don't specify a user agent and dont' specify proxy settings. This is the same behavior WinHttp
            // uses when downloading the PAC file.
            session = UnsafeNclNativeMethods.WinHttp.WinHttpOpen(null,
                UnsafeNclNativeMethods.WinHttp.AccessType.NoProxy, null, null, 0);

            // Don't throw on error, just log the error information. This is consistent with how auto-proxy
            // works: we never throw on error (discovery, download, execution errors).
            if (session == null || session.IsInvalid)
            {
                int errorCode = GetLastWin32Error();
                if (Logging.On) Logging.PrintError(Logging.Web, SR.GetString(SR.net_log_proxy_winhttp_cant_open_session, errorCode));
            }
            else
            {
                // The default download-timeout is 1 min.
                // WinHTTP will use the sum of all four timeouts provided in WinHttpSetTimeouts as the
                // actual timeout. Setting a value to 0 means "infinite".
                // Since we don't provide the ability to specify finegrained timeouts like WinHttp does,
                // we simply apply the configured timeout to all four WinHttp timeouts.
                int timeout = SettingsSectionInternal.Section.DownloadTimeout;

                if (!UnsafeNclNativeMethods.WinHttp.WinHttpSetTimeouts(session, timeout, timeout, timeout, timeout))
                {
                    // We weren't able to set the timeouts. Just log and continue.
                    int errorCode = GetLastWin32Error();
                    if (Logging.On) Logging.PrintError(Logging.Web, SR.GetString(SR.net_log_proxy_winhttp_timeout_error, errorCode));
                }
            }
        }
示例#2
0
 internal void DeleteScriptEngine()
 {
     if (ScriptEngine != null)
     {
         ScriptEngine.Close();
         ScriptEngine = null;
     }
 }
示例#3
0
        internal void UnsafeUpdateFromRegistry()
        {
            GlobalLog.Assert(!_UseRegistry, "WebProxy#{0}::UnsafeUpdateFromRegistry()|_UseRegistry ScriptEngine#{1}", ValidationHelper.HashString(this), ValidationHelper.HashString(m_ScriptEngine));
            _UseRegistry = true;
#if !FEATURE_PAL || !MOBILE
            ScriptEngine = new AutoWebProxyScriptEngine(this, true);
            WebProxyData webProxyData = ScriptEngine.GetWebProxyData();

            Update(webProxyData);
#endif
        }
示例#4
0
        public WinHttpWebProxyFinder(AutoWebProxyScriptEngine engine)
            : base(engine)
        {
            // Don't specify a user agent and dont' specify proxy settings. This is the same behavior WinHttp
            // uses when downloading the PAC file.
            session = UnsafeNclNativeMethods.WinHttp.WinHttpOpen(null,
                                                                 UnsafeNclNativeMethods.WinHttp.AccessType.NoProxy, null, null, 0);

            // Don't throw on error, just log the error information. This is consistent with how auto-proxy
            // works: we never throw on error (discovery, download, execution errors).
            if (session == null || session.IsInvalid)
            {
                int errorCode = GetLastWin32Error();
                if (Logging.On)
                {
                    Logging.PrintError(Logging.Web, SR.GetString(SR.net_log_proxy_winhttp_cant_open_session, errorCode));
                }
            }
            else
            {
                // The default download-timeout is 1 min.
                // WinHTTP will use the sum of all four timeouts provided in WinHttpSetTimeouts as the
                // actual timeout. Setting a value to 0 means "infinite".
                // Since we don't provide the ability to specify finegrained timeouts like WinHttp does,
                // we simply apply the configured timeout to all four WinHttp timeouts.
                int timeout = SettingsSectionInternal.Section.DownloadTimeout;

                if (!UnsafeNclNativeMethods.WinHttp.WinHttpSetTimeouts(session, timeout, timeout, timeout, timeout))
                {
                    // We weren't able to set the timeouts. Just log and continue.
                    int errorCode = GetLastWin32Error();
                    if (Logging.On)
                    {
                        Logging.PrintError(Logging.Web, SR.GetString(SR.net_log_proxy_winhttp_timeout_error, errorCode));
                    }
                }
            }
        }
 public WinHttpWebProxyFinder(AutoWebProxyScriptEngine engine) : base(engine)
 {
     this.session = UnsafeNclNativeMethods.WinHttp.WinHttpOpen(null, UnsafeNclNativeMethods.WinHttp.AccessType.NoProxy, null, null, 0);
     if ((this.session == null) || this.session.IsInvalid)
     {
         int num = GetLastWin32Error();
         if (Logging.On)
         {
             Logging.PrintError(Logging.Web, SR.GetString("net_log_proxy_winhttp_cant_open_session", new object[] { num }));
         }
     }
     else
     {
         int downloadTimeout = SettingsSectionInternal.Section.DownloadTimeout;
         if (!UnsafeNclNativeMethods.WinHttp.WinHttpSetTimeouts(this.session, downloadTimeout, downloadTimeout, downloadTimeout, downloadTimeout))
         {
             int num3 = GetLastWin32Error();
             if (Logging.On)
             {
                 Logging.PrintError(Logging.Web, SR.GetString("net_log_proxy_winhttp_timeout_error", new object[] { num3 }));
             }
         }
     }
 }
示例#6
0
 public WinHttpWebProxyFinder(AutoWebProxyScriptEngine engine) : base(engine)
 {
     this.session = UnsafeNclNativeMethods.WinHttp.WinHttpOpen(null, UnsafeNclNativeMethods.WinHttp.AccessType.NoProxy, null, null, 0);
     if ((this.session == null) || this.session.IsInvalid)
     {
         int num = GetLastWin32Error();
         if (Logging.On)
         {
             Logging.PrintError(Logging.Web, SR.GetString("net_log_proxy_winhttp_cant_open_session", new object[] { num }));
         }
     }
     else
     {
         int downloadTimeout = SettingsSectionInternal.Section.DownloadTimeout;
         if (!UnsafeNclNativeMethods.WinHttp.WinHttpSetTimeouts(this.session, downloadTimeout, downloadTimeout, downloadTimeout, downloadTimeout))
         {
             int num3 = GetLastWin32Error();
             if (Logging.On)
             {
                 Logging.PrintError(Logging.Web, SR.GetString("net_log_proxy_winhttp_timeout_error", new object[] { num3 }));
             }
         }
     }
 }
 public BaseWebProxyFinder(AutoWebProxyScriptEngine engine)
 {
     this.engine = engine;
 }
示例#8
0
        internal void UnsafeUpdateFromRegistry() {
            GlobalLog.Assert(!_UseRegistry, "WebProxy#{0}::UnsafeUpdateFromRegistry()|_UseRegistry ScriptEngine#{1}", ValidationHelper.HashString(this), ValidationHelper.HashString(m_ScriptEngine));
            _UseRegistry = true;
#if !FEATURE_PAL || !MOBILE
            ScriptEngine = new AutoWebProxyScriptEngine(this, true);
            WebProxyData webProxyData = ScriptEngine.GetWebProxyData();

            Update(webProxyData);
#endif
        }
示例#9
0
 internal void DeleteScriptEngine() {
     if (ScriptEngine != null) {
         ScriptEngine.Close();
         ScriptEngine = null;
     }
 }
 public NetWebProxyFinder(AutoWebProxyScriptEngine engine)
     : base(engine)
 {
     backupCache = new SingleItemRequestCache(RequestCacheManager.IsCachingEnabled);
     lockObject  = new object();
 }
 public HybridWebProxyFinder(AutoWebProxyScriptEngine engine)
 {
     this.engine        = engine;
     this.winHttpFinder = new WinHttpWebProxyFinder(engine);
     this.currentFinder = winHttpFinder;
 }
 public HybridWebProxyFinder(AutoWebProxyScriptEngine engine)
 {
     this.engine = engine;            
     this.winHttpFinder = new WinHttpWebProxyFinder(engine);
     this.currentFinder = winHttpFinder;
 }
 public NetWebProxyFinder(AutoWebProxyScriptEngine engine)
     : base(engine)
 {
     backupCache = new SingleItemRequestCache(RequestCacheManager.IsCachingEnabled);
     lockObject = new object();
 }
示例#14
0
 public BaseWebProxyFinder(AutoWebProxyScriptEngine engine)
 {
     this.engine = engine;
 }