Issue 32465: [urllib] proxy_bypass_registry - extra error handling required for ProxyOverride, Windows under proxy environment (original) (raw)

[Problem]

[Setup]

[Detail] https://github.com/python/cpython/blob/2.7/Lib/urllib.py proxy_bypass_registry has an issue

  1. It gets registry value from HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings ProxyEnable string value.
  2. Splits the string with ;. And as the registry value ends with ; the split list contains a zero length string at the end.
  3. Use the split string to re.match. And as there is zero length string at the end it, and the result of re.match('', 'anystring', re.I) is always not None.
  4. Afterwards connection is attempted without using the proxy, hence connection cannot be made

From line 1617

    proxyOverride = proxyOverride.split(';')
    # now check if we match one of the registry values.
    for test in proxyOverride:
        if test == '<local>':
            if '.' not in rawHost:
                return 1
        test = test.replace(".", r"\.")     # mask dots
        test = test.replace("*", r".*")     # change glob sequence
        test = test.replace("?", r".")      # change glob char
        for val in host:
            # print "%s <--> %s" %( test, val )
            if re.match(test, val, re.I):
                return 1