diff options
author | Matthew Wild <mwild1@gmail.com> | 2014-07-25 13:02:46 +0100 |
---|---|---|
committer | Matthew Wild <mwild1@gmail.com> | 2014-07-25 13:02:46 +0100 |
commit | 8a4ed9466f3b877d7a6e2c87f1cbec73c4a3c516 (patch) | |
tree | 56c01e1263e5c9fb3d1b580179e3bbaf119530b3 /net/dns.lua | |
parent | bb40012ca2d5a7eb38d86f4cef5488b31f6da0d0 (diff) | |
parent | 999a5a0cb3e13f5922d5c64418162ff463f1abd7 (diff) | |
download | prosody-8a4ed9466f3b877d7a6e2c87f1cbec73c4a3c516.tar.gz prosody-8a4ed9466f3b877d7a6e2c87f1cbec73c4a3c516.zip |
Merge 0.10->trunk
Diffstat (limited to 'net/dns.lua')
-rw-r--r-- | net/dns.lua | 15 |
1 files changed, 6 insertions, 9 deletions
diff --git a/net/dns.lua b/net/dns.lua index 088067ae..42bbdb01 100644 --- a/net/dns.lua +++ b/net/dns.lua @@ -752,7 +752,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) @@ -777,7 +776,7 @@ function resolver:query(qname, qtype, qclass) -- - - - - - - - - - -- query end end -- Tried everything, failed - self:cancel(qclass, qtype, qname, co, true); + self:cancel(qclass, qtype, qname); end end) end @@ -865,7 +864,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); @@ -906,7 +904,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); @@ -917,13 +914,13 @@ function resolver:feed(sock, packet, force) return response; end -function resolver:cancel(qclass, qtype, qname, co, call_handler) +function resolver:cancel(qclass, qtype, qname) local cos = get(self.wanted, qclass, qtype, qname); if cos then - if call_handler then - coroutine.resume(co); + for co in pairs(cos) do + if coroutine.status(co) == "suspended" then coroutine.resume(co); end end - cos[co] = nil; + set(self.wanted, qclass, qtype, qname, nil); end end @@ -1044,7 +1041,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' }); |