Software /
code /
prosody
Changeset
1005:0eed5db7758d
net.adns: Call handler for records already cached
author | Matthew Wild <mwild1@gmail.com> |
---|---|
date | Sat, 18 Apr 2009 17:48:30 +0100 |
parents | 1004:0c3ea09d6d6e |
children | 1006:9166d7a8c3c0 1013:943f2cd7e480 |
files | net/adns.lua |
diffstat | 1 files changed, 9 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/net/adns.lua Sat Apr 18 14:18:50 2009 +0100 +++ b/net/adns.lua Sat Apr 18 17:48:30 2009 +0100 @@ -8,17 +8,21 @@ module "adns" function lookup(handler, qname, qtype, qclass) - return dns.peek(qname, qtype, qclass) or - coroutine.wrap(function () - log("debug", "Records for "..qname.." not in cache, sending query (%s)...", tostring(coroutine.running())); + return coroutine.wrap(function (peek) + if peek then + log("debug", "Records for %s already cached, using those...", qname); + handler(peek); + return; + 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 - log("debug", "Reply for "..qname.." (%s)", tostring(coroutine.running())); + log("debug", "Reply for %s (%s)", qname, tostring(coroutine.running())); local ok, err = pcall(handler, dns.peek(qname, qtype, qclass)); if not ok then log("debug", "Error in DNS response handler: %s", tostring(err)); end - end)(); + end)(dns.peek(qname, qtype, qclass)); end function new_async_socket(sock)