Skip to content

Commit c77e97a

Browse files
authored
Add support for getaddrinfo (#118)
1 parent d40f913 commit c77e97a

File tree

2 files changed

+24
-0
lines changed

2 files changed

+24
-0
lines changed

aiodns/__init__.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,12 @@ def gethostbyname(self, host: str, family: socket.AddressFamily) -> asyncio.Futu
110110
cb = functools.partial(self._callback, fut)
111111
self._channel.gethostbyname(host, family, cb)
112112
return fut
113+
114+
def getaddrinfo(self, host: str, family: socket.AddressFamily = socket.AF_UNSPEC, port: Optional[int] = None, proto: int = 0, type: int = 0, flags: int = 0) -> asyncio.Future:
115+
fut = asyncio.Future(loop=self.loop) # type: asyncio.Future
116+
cb = functools.partial(self._callback, fut)
117+
self._channel.getaddrinfo(host, port, cb, family=family, type=type, proto=proto, flags=flags)
118+
return fut
113119

114120
def gethostbyaddr(self, name: str) -> asyncio.Future:
115121
fut = asyncio.Future(loop=self.loop) # type: asyncio.Future

tests.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -151,6 +151,24 @@ def test_gethostbyname(self):
151151
result = self.loop.run_until_complete(f)
152152
self.assertTrue(result)
153153

154+
def test_getaddrinfo_address_family_0(self):
155+
f = self.resolver.getaddrinfo('google.com')
156+
result = self.loop.run_until_complete(f)
157+
self.assertTrue(result)
158+
self.assertTrue(len(result.nodes) > 1)
159+
160+
def test_getaddrinfo_address_family_af_inet(self):
161+
f = self.resolver.getaddrinfo('google.com', socket.AF_INET)
162+
result = self.loop.run_until_complete(f)
163+
self.assertTrue(result)
164+
self.assertTrue(all(node.family == socket.AF_INET for node in result.nodes))
165+
166+
def test_getaddrinfo_address_family_af_inet6(self):
167+
f = self.resolver.getaddrinfo('google.com', socket.AF_INET6)
168+
result = self.loop.run_until_complete(f)
169+
self.assertTrue(result)
170+
self.assertTrue(all(node.family == socket.AF_INET6 for node in result.nodes))
171+
154172
@unittest.skipIf(sys.platform == 'win32', 'skipped on Windows')
155173
def test_gethostbyaddr(self):
156174
f = self.resolver.gethostbyaddr('127.0.0.1')

0 commit comments

Comments
 (0)