|
|
|
|
@ -745,7 +745,6 @@ function resolver:query(qname, qtype, qclass) -- - - - - - - - - - -- query |
|
|
|
|
-- remember which coroutine wants the answer |
|
|
|
|
if co then |
|
|
|
|
set(self.wanted, qclass, qtype, qname, co, true); |
|
|
|
|
--set(self.yielded, co, qclass, qtype, qname, true); |
|
|
|
|
end |
|
|
|
|
|
|
|
|
|
local conn, err = self:getsocket(o.server) |
|
|
|
|
@ -858,7 +857,6 @@ function resolver:receive(rset) -- - - - - - - - - - - - - - - - - receive |
|
|
|
|
local cos = get(self.wanted, q.class, q.type, q.name); |
|
|
|
|
if cos then |
|
|
|
|
for co in pairs(cos) do |
|
|
|
|
set(self.yielded, co, q.class, q.type, q.name, nil); |
|
|
|
|
if coroutine.status(co) == "suspended" then coroutine.resume(co); end |
|
|
|
|
end |
|
|
|
|
set(self.wanted, q.class, q.type, q.name, nil); |
|
|
|
|
@ -899,7 +897,6 @@ function resolver:feed(sock, packet, force) |
|
|
|
|
local cos = get(self.wanted, q.class, q.type, q.name); |
|
|
|
|
if cos then |
|
|
|
|
for co in pairs(cos) do |
|
|
|
|
set(self.yielded, co, q.class, q.type, q.name, nil); |
|
|
|
|
if coroutine.status(co) == "suspended" then coroutine.resume(co); end |
|
|
|
|
end |
|
|
|
|
set(self.wanted, q.class, q.type, q.name, nil); |
|
|
|
|
@ -1037,7 +1034,7 @@ end |
|
|
|
|
function dns.resolver () -- - - - - - - - - - - - - - - - - - - - - resolver |
|
|
|
|
-- this function seems to be redundant with resolver.new () |
|
|
|
|
|
|
|
|
|
local r = { active = {}, cache = {}, unsorted = {}, wanted = {}, yielded = {}, best_server = 1 }; |
|
|
|
|
local r = { active = {}, cache = {}, unsorted = {}, wanted = {}, best_server = 1 }; |
|
|
|
|
setmetatable (r, resolver); |
|
|
|
|
setmetatable (r.cache, cache_metatable); |
|
|
|
|
setmetatable (r.unsorted, { __mode = 'kv' }); |
|
|
|
|
|