Software /
code /
prosody
Comparison
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 |
comparison
equal
deleted
inserted
replaced
6630:6735e2d735d6 | 6632:855085439f7f |
---|---|
699 local function comp_mx(a, b) -- - - - - - - - - - - - - - - - - - - comp_mx | 699 local function comp_mx(a, b) -- - - - - - - - - - - - - - - - - - - comp_mx |
700 return (a.pref == b.pref) and (a.mx < b.mx) or (a.pref < b.pref); | 700 return (a.pref == b.pref) and (a.mx < b.mx) or (a.pref < b.pref); |
701 end | 701 end |
702 | 702 |
703 | 703 |
704 function resolver:peek (qname, qtype, qclass) -- - - - - - - - - - - - peek | 704 function resolver:peek (qname, qtype, qclass, n) -- - - - - - - - - - - - peek |
705 qname, qtype, qclass = standardize(qname, qtype, qclass); | 705 qname, qtype, qclass = standardize(qname, qtype, qclass); |
706 local rrs = get(self.cache, qclass, qtype, qname); | 706 local rrs = get(self.cache, qclass, qtype, qname); |
707 if not rrs then return nil; end | 707 if not rrs then |
708 if n then if n <= 0 then return end else n = 3 end | |
709 rrs = get(self.cache, qclass, "CNAME", qname); | |
710 if not (rrs and rrs[1]) then return end | |
711 return self:peek(rrs[1].cname, qtype, qclass, n - 1); | |
712 end | |
708 if prune(rrs, socket.gettime()) and qtype == '*' or not next(rrs) then | 713 if prune(rrs, socket.gettime()) and qtype == '*' or not next(rrs) then |
709 set(self.cache, qclass, qtype, qname, nil); | 714 set(self.cache, qclass, qtype, qname, nil); |
710 return nil; | 715 return nil; |
711 end | 716 end |
712 if self.unsorted[rrs] then table.sort (rrs, comp_mx); end | 717 if self.unsorted[rrs] then table.sort (rrs, comp_mx); self.unsorted[rrs] = nil; end |
713 return rrs; | 718 return rrs; |
714 end | 719 end |
715 | 720 |
716 | 721 |
717 function resolver:purge(soft) -- - - - - - - - - - - - - - - - - - - purge | 722 function resolver:purge(soft) -- - - - - - - - - - - - - - - - - - - purge |