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));
                }
            }
        }
Example #2
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 }));
             }
         }
     }
 }
Example #4
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 }));
             }
         }
     }
 }
 internal static extern bool WinHttpGetProxyForUrl(SafeInternetHandle session, string url,
     [In] ref WINHTTP_AUTOPROXY_OPTIONS autoProxyOptions, out WINHTTP_PROXY_INFO proxyInfo);
 internal static extern bool WinHttpSetTimeouts(SafeInternetHandle session, int resolveTimeout,
     int connectTimeout, int sendTimeout, int receiveTimeout);