From 4ed07e7947ed559ae1b97d031351b5874156eec0 Mon Sep 17 00:00:00 2001
From: Matthew Wild <mwild1@gmail.com>
Date: Fri, 25 Jul 2014 12:08:07 +0100
Subject: net.dns: Ensure all pending requests get notified of a timeout when
 looking up a record (fix for d122420542fb)

---
 net/dns.lua | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

(limited to 'net')

diff --git a/net/dns.lua b/net/dns.lua
index 492bd1c5..906365ce 100644
--- a/net/dns.lua
+++ b/net/dns.lua
@@ -770,7 +770,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
@@ -910,13 +910,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
 
-- 
cgit v1.2.3


From 7ff1520d7df876006a7c4bba2bf36c4792fa7bd5 Mon Sep 17 00:00:00 2001
From: Matthew Wild <mwild1@gmail.com>
Date: Fri, 25 Jul 2014 12:54:31 +0100
Subject: net.dns: Remove unused obsolete code

---
 net/dns.lua | 5 +----
 1 file changed, 1 insertion(+), 4 deletions(-)

(limited to 'net')

diff --git a/net/dns.lua b/net/dns.lua
index 906365ce..89bd3564 100644
--- a/net/dns.lua
+++ b/net/dns.lua
@@ -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' });
-- 
cgit v1.2.3