Skip to content

Commit

Permalink
Added cancel method to DNSResolver
Browse files Browse the repository at this point in the history
Cancels all ongoing DNS queries in that resolver
  • Loading branch information
saghul committed Mar 5, 2012
1 parent a421f45 commit fa9f5c1
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 0 deletions.
9 changes: 9 additions & 0 deletions src/dns.c
Original file line number Diff line number Diff line change
Expand Up @@ -1345,6 +1345,14 @@ DNSResolver_func_query_naptr(DNSResolver *self, PyObject *args)
}


static PyObject *
DNSResolver_func_cancel(DNSResolver *self)
{
ares_cancel(self->channel);
Py_RETURN_NONE;
}


static int
set_dns_servers(DNSResolver *self, PyObject *value)
{
Expand Down Expand Up @@ -1553,6 +1561,7 @@ DNSResolver_tp_dealloc(DNSResolver *self)

static PyMethodDef
DNSResolver_tp_methods[] = {
{ "cancel", (PyCFunction)DNSResolver_func_cancel, METH_NOARGS, "Cancel all pending queries on this resolver" },
{ "gethostbyname", (PyCFunction)DNSResolver_func_gethostbyname, METH_VARARGS|METH_KEYWORDS, "Gethostbyname" },
{ "gethostbyaddr", (PyCFunction)DNSResolver_func_gethostbyaddr, METH_VARARGS|METH_KEYWORDS, "Gethostbyaddr" },
{ "getnameinfo", (PyCFunction)DNSResolver_func_getnameinfo, METH_VARARGS|METH_KEYWORDS, "Getnameinfo" },
Expand Down
10 changes: 10 additions & 0 deletions tests/test_dns.py
Original file line number Diff line number Diff line change
Expand Up @@ -134,6 +134,16 @@ def test_query_naptr(self):
resolver.query_naptr('sip2sip.info', self.query_naptr_cb)
loop.run()

def cancelled_cb(self, resolver, result, errorno):
self.assertEqual(errorno, pyuv.errno.ARES_ECANCELLED)

def test_query_cancelled(self):
loop = pyuv.Loop.default_loop()
resolver = pyuv.dns.DNSResolver(loop)
resolver.query_ns('google.com', self.cancelled_cb)
resolver.cancel()
loop.run()


if __name__ == '__main__':
unittest2.main(verbosity=2)
Expand Down

0 comments on commit fa9f5c1

Please sign in to comment.