net.dns: Ensure all pending requests get notified of a timeout when looking up a...
authorMatthew Wild <mwild1@gmail.com>
Fri, 25 Jul 2014 11:08:07 +0000 (12:08 +0100)
committerMatthew Wild <mwild1@gmail.com>
Fri, 25 Jul 2014 11:08:07 +0000 (12:08 +0100)
net/dns.lua

index 492bd1c5e0dd2eb91ce57e070615de0aaeed2146..906365ce460ff3168e93126b771e7740eec8c2b4 100644 (file)
@@ -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