Software /
code /
prosody
Diff
net/dns.lua @ 6632:855085439f7f
Merge 0.9->0.10
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Sun, 26 Apr 2015 00:06:44 +0200 |
parent | 6510:8273236a995f |
parent | 6631:45222bfb206f |
child | 6646:9795b8cf14f1 |
line wrap: on
line diff
--- a/net/dns.lua Sun Apr 26 00:06:11 2015 +0200 +++ b/net/dns.lua Sun Apr 26 00:06:44 2015 +0200 @@ -701,15 +701,20 @@ end -function resolver:peek (qname, qtype, qclass) -- - - - - - - - - - - - peek +function resolver:peek (qname, qtype, qclass, n) -- - - - - - - - - - - - peek qname, qtype, qclass = standardize(qname, qtype, qclass); local rrs = get(self.cache, qclass, qtype, qname); - if not rrs then return nil; end + if not rrs then + if n then if n <= 0 then return end else n = 3 end + rrs = get(self.cache, qclass, "CNAME", qname); + if not (rrs and rrs[1]) then return end + return self:peek(rrs[1].cname, qtype, qclass, n - 1); + end if prune(rrs, socket.gettime()) and qtype == '*' or not next(rrs) then set(self.cache, qclass, qtype, qname, nil); return nil; end - if self.unsorted[rrs] then table.sort (rrs, comp_mx); end + if self.unsorted[rrs] then table.sort (rrs, comp_mx); self.unsorted[rrs] = nil; end return rrs; end