]>
git.ipfire.org Git - ipfire.org.git/blob - src/backend/resolver.py
6 import tornado
.platform
.caresresolver
8 class Resolver(tornado
.platform
.caresresolver
.CaresResolver
):
9 def initialize(self
, **kwargs
):
13 self
.channel
= pycares
.Channel(sock_state_cb
=self
._sock
_state
_cb
, **kwargs
)
15 async def query(self
, name
, type=pycares
.QUERY_TYPE_A
):
17 fut
= tornado
.gen
.Future()
20 self
.channel
.query(name
, type, lambda result
, error
: fut
.set_result((result
, error
)))
22 # Wait for the response
23 result
, error
= await fut
28 if error
== pycares
.errno
.ARES_ENOTFOUND
:
31 # Ignore responses with no data
32 elif error
== pycares
.errno
.ARES_ENODATA
:
36 "C-Ares returned error %s: %s while resolving %s"
37 % (error
, pycares
.errno
.strerror(error
), name
)