mirror of
				https://github.com/python/cpython.git
				synced 2025-11-03 23:21:29 +00:00 
			
		
		
		
	Issue #26864: Fix case insensitivity and suffix comparison with no_proxy
Patch by Xiang Zhang.
This commit is contained in:
		
							parent
							
								
									6d34bbbfc7
								
							
						
					
					
						commit
						aa27982ffc
					
				
					 3 changed files with 24 additions and 2 deletions
				
			
		| 
						 | 
					@ -231,6 +231,19 @@ def test_getproxies_environment_keep_no_proxies(self):
 | 
				
			||||||
        self.assertTrue(urllib.request.proxy_bypass_environment('anotherdomain.com:8888'))
 | 
					        self.assertTrue(urllib.request.proxy_bypass_environment('anotherdomain.com:8888'))
 | 
				
			||||||
        self.assertTrue(urllib.request.proxy_bypass_environment('newdomain.com:1234'))
 | 
					        self.assertTrue(urllib.request.proxy_bypass_environment('newdomain.com:1234'))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def test_proxy_bypass_environment_host_match(self):
 | 
				
			||||||
 | 
					        bypass = urllib.request.proxy_bypass_environment
 | 
				
			||||||
 | 
					        self.env.set('NO_PROXY',
 | 
				
			||||||
 | 
					            'localhost, anotherdomain.com, newdomain.com:1234')
 | 
				
			||||||
 | 
					        self.assertTrue(bypass('localhost'))
 | 
				
			||||||
 | 
					        self.assertTrue(bypass('LocalHost'))                 # MixedCase
 | 
				
			||||||
 | 
					        self.assertTrue(bypass('LOCALHOST'))                 # UPPERCASE
 | 
				
			||||||
 | 
					        self.assertTrue(bypass('newdomain.com:1234'))
 | 
				
			||||||
 | 
					        self.assertTrue(bypass('anotherdomain.com:8888'))
 | 
				
			||||||
 | 
					        self.assertTrue(bypass('www.newdomain.com:1234'))
 | 
				
			||||||
 | 
					        self.assertFalse(bypass('prelocalhost'))
 | 
				
			||||||
 | 
					        self.assertFalse(bypass('newdomain.com'))            # no port
 | 
				
			||||||
 | 
					        self.assertFalse(bypass('newdomain.com:1235'))       # wrong port
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class ProxyTests_withOrderedEnv(unittest.TestCase):
 | 
					class ProxyTests_withOrderedEnv(unittest.TestCase):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -2432,8 +2432,12 @@ def proxy_bypass_environment(host, proxies=None):
 | 
				
			||||||
    # check if the host ends with any of the DNS suffixes
 | 
					    # check if the host ends with any of the DNS suffixes
 | 
				
			||||||
    no_proxy_list = [proxy.strip() for proxy in no_proxy.split(',')]
 | 
					    no_proxy_list = [proxy.strip() for proxy in no_proxy.split(',')]
 | 
				
			||||||
    for name in no_proxy_list:
 | 
					    for name in no_proxy_list:
 | 
				
			||||||
        if name and (hostonly.endswith(name) or host.endswith(name)):
 | 
					        if name:
 | 
				
			||||||
            return 1
 | 
					            name = re.escape(name)
 | 
				
			||||||
 | 
					            pattern = r'(.+\.)?%s$' % name
 | 
				
			||||||
 | 
					            if (re.match(pattern, hostonly, re.I)
 | 
				
			||||||
 | 
					                    or re.match(pattern, host, re.I)):
 | 
				
			||||||
 | 
					                return 1
 | 
				
			||||||
    # otherwise, don't bypass
 | 
					    # otherwise, don't bypass
 | 
				
			||||||
    return 0
 | 
					    return 0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -107,6 +107,11 @@ Core and Builtins
 | 
				
			||||||
Library
 | 
					Library
 | 
				
			||||||
-------
 | 
					-------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- Issue #26864: In urllib.request, change the proxy bypass host checking
 | 
				
			||||||
 | 
					  against no_proxy to be case-insensitive, and to not match unrelated host
 | 
				
			||||||
 | 
					  names that happen to have a bypassed hostname as a suffix.  Patch by Xiang
 | 
				
			||||||
 | 
					  Zhang.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- Issue #26634: recursive_repr() now sets __qualname__ of wrapper.  Patch by
 | 
					- Issue #26634: recursive_repr() now sets __qualname__ of wrapper.  Patch by
 | 
				
			||||||
  Xiang Zhang.
 | 
					  Xiang Zhang.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue