ejabberdsql2prosody: Allow for multiple INSERTs to the same table
[prosody.git] / net / adns.lua
index 07d4fe5424054def245140c956154bc41b4ed96a..34ef5d770dae27d19ca867f555ef8165176e56b3 100644 (file)
@@ -1,3 +1,11 @@
+-- Prosody IM
+-- Copyright (C) 2008-2009 Matthew Wild
+-- Copyright (C) 2008-2009 Waqas Hussain
+-- 
+-- This project is MIT/X11 licensed. Please see the
+-- COPYING file in the source package for more information.
+--
+
 local server = require "net.server";
 local dns = require "net.dns";
 
@@ -16,7 +24,7 @@ function lookup(handler, qname, qtype, qclass)
                                end
                                log("debug", "Records for %s not in cache, sending query (%s)...", qname, tostring(coroutine.running()));
                                dns.query(qname, qtype, qclass);
-                               coroutine.yield(nil); -- Wait for reply
+                               coroutine.yield({ qclass or "IN", qtype or "A", qname, coroutine.running()}); -- Wait for reply
                                log("debug", "Reply for %s (%s)", qname, tostring(coroutine.running()));
                                local ok, err = pcall(handler, dns.peek(qname, qtype, qclass));
                                if not ok then
@@ -25,6 +33,14 @@ function lookup(handler, qname, qtype, qclass)
                        end)(dns.peek(qname, qtype, qclass));
 end
 
+function cancel(handle, call_handler)
+       log("warn", "Cancelling DNS lookup for %s", tostring(handle[3]));
+       dns.cancel(handle);
+       if call_handler then
+               coroutine.resume(handle[4]);
+       end
+end
+
 function new_async_socket(sock)
        local newconn = {};
        local listener = {};