| 
					
				 | 
			
			
				@@ -26,7 +26,6 @@ logging.getLogger('requests.packages.urllib3.connectionpool').setLevel(logging.W 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 CA_ROOT_CERTIFICATE = os.path.join(os.path.dirname(__file__), 'certs/ca-root.crt') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 PYTEST_RUNNING_IN_CONTAINER = os.environ.get('PYTEST_RUNNING_IN_CONTAINER') == "1" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-HAS_IPV6 = socket.has_ipv6 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 FORCE_CONTAINER_IPV6 = False  # ugly global state to consider containers' IPv6 address instead of IPv4 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 DOCKER_COMPOSE = os.environ.get('DOCKER_COMPOSE', 'docker compose') 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -43,6 +42,29 @@ test_container = 'nginx-proxy-pytest' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 # 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ############################################################################### 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+def _has_ipv6(host: str) -> bool: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    """Returns True if the system can bind an IPv6 address.""" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    sock = None 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    has_ipv6 = False 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if socket.has_ipv6: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        # has_ipv6 returns true if cPython was compiled with IPv6 support. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        # It does not tell us if the system has IPv6 support enabled. To 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        # determine that we must bind to an IPv6 address. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        # https://github.com/urllib3/urllib3/pull/611 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        # https://bugs.python.org/issue658327 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        try: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            sock = socket.socket(socket.AF_INET6) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            sock.bind((host, 0)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            has_ipv6 = True 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        except Exception: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            pass 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if sock: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        sock.close() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    return has_ipv6 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+HAS_IPV6 = _has_ipv6("::1") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 @contextlib.contextmanager 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 def ipv6(force_ipv6=True): 
			 |