diff --git a/swift/common/middleware/cname_lookup.py b/swift/common/middleware/cname_lookup.py index a29a86e9cf..31574bc6a4 100644 --- a/swift/common/middleware/cname_lookup.py +++ b/swift/common/middleware/cname_lookup.py @@ -62,10 +62,14 @@ def lookup_cname(domain): # pragma: no cover def is_ip(domain): try: - socket.inet_aton(domain) + socket.inet_pton(socket.AF_INET, domain) return True except socket.error: - return False + try: + socket.inet_pton(socket.AF_INET6, domain) + return True + except socket.error: + return False class CNAMELookupMiddleware(object): diff --git a/test/unit/common/middleware/test_cname_lookup.py b/test/unit/common/middleware/test_cname_lookup.py index cfe1366a46..b64104e210 100644 --- a/test/unit/common/middleware/test_cname_lookup.py +++ b/test/unit/common/middleware/test_cname_lookup.py @@ -47,7 +47,6 @@ class TestCNAMELookup(unittest.TestCase): {'lookup_depth': 2}) def test_pass_ip_addresses(self): - cname_lookup.lookup_cname = original_lookup req = Request.blank('/', environ={'REQUEST_METHOD': 'GET'}, @@ -55,6 +54,11 @@ class TestCNAMELookup(unittest.TestCase): resp = self.app(req.environ, start_response) self.assertEquals(resp, 'FAKE APP') + req = Request.blank('/', environ={'REQUEST_METHOD': 'GET'}, + headers={'Host': 'fc00:7ea1:f155::6321:8841'}) + resp = self.app(req.environ, start_response) + self.assertEquals(resp, 'FAKE APP') + def test_passthrough(self): def my_lookup(d):