# HG changeset patch # User Matthew Wild # Date 1579873802 0 # Node ID 431511e190bc6d98eccfec991e177bca3d7bef4c # Parent 74d66b1be989908dd3b456a406bd5f6a8e93ccc4 net.adns: Add :lookup_promise() method diff -r 74d66b1be989 -r 431511e190bc net/adns.lua --- a/net/adns.lua Fri Jan 24 13:49:33 2020 +0000 +++ b/net/adns.lua Fri Jan 24 13:50:02 2020 +0000 @@ -8,6 +8,7 @@ local server = require "net.server"; local new_resolver = require "net.dns".resolver; +local promise = require "util.promise"; local log = require "util.logger".init("adns"); @@ -91,6 +92,18 @@ end)(resolver:peek(qname, qtype, qclass)); end +function async_resolver_methods:lookup_promise(qname, qtype, qclass) + return promise.new(function (resolve, reject) + local function handler(answer) + if not answer then + return reject(); + end + resolve(answer); + end + self:lookup(handler, qname, qtype, qclass); + end); +end + function query_methods:cancel(call_handler, reason) -- luacheck: ignore 212/reason log("warn", "Cancelling DNS lookup for %s", self[4]); self[1].cancel(self[2], self[3], self[4], self[5], call_handler);