diff --git a/eventlet/support/greendns.py b/eventlet/support/greendns.py index b6358af..bbb8484 100644 --- a/eventlet/support/greendns.py +++ b/eventlet/support/greendns.py @@ -91,6 +91,9 @@ class ResolverProxy(object): self._resolver.cache = dns.resolver.Cache() query = args[0] + if query is None: + args = list(args) + query = args[0] = '0.0.0.0' if self._hosts and self._hosts.get(query): answer = FakeAnswer() record = FakeRecord() @@ -199,7 +202,11 @@ def getnameinfo(sockaddr, flags): Currently only supports IPv4. """ - host, port = sockaddr + try: + host, port = sockaddr + except ValueError: + # must be ipv6 sockaddr, pretending we don't know how to resolve it + raise socket.gaierror(-2, 'name or service not known') if (flags & socket.NI_NAMEREQD) and (flags & socket.NI_NUMERICHOST): # Conflicting flags. Punt. @@ -245,7 +252,7 @@ def is_ipv4_addr(host): """ try: d1, d2, d3, d4 = map(int, host.split('.')) - except ValueError: + except (ValueError, AttributeError): return False if 0 <= d1 <= 255 and 0 <= d2 <= 255 and 0 <= d3 <= 255 and 0 <= d4 <= 255: diff --git a/tests/mock.py b/tests/mock.py old mode 100755 new mode 100644