Software / code / prosody
Comparison
net/resolvers/basic.lua @ 10438:55490be0dc29
Merge 0.11->trunk
| author | Kim Alvefur <zash@zash.se> |
|---|---|
| date | Sun, 24 Nov 2019 04:30:32 +0100 |
| parent | 10401:1ef1f6c43c5b |
| parent | 10437:fcfc8f4d14a8 |
| child | 10441:f2c9abc71f08 |
comparison
equal
deleted
inserted
replaced
| 10435:6e3fa523c969 | 10438:55490be0dc29 |
|---|---|
| 32 if n > 0 then return; end | 32 if n > 0 then return; end |
| 33 self.targets = targets; | 33 self.targets = targets; |
| 34 self:next(cb); | 34 self:next(cb); |
| 35 end | 35 end |
| 36 | 36 |
| 37 local is_ip = inet_pton(self.hostname); | |
| 38 if is_ip then | |
| 39 if #is_ip == 16 then | |
| 40 cb(self.conn_type.."6", self.hostname, self.port, self.extra); | |
| 41 elseif #is_ip == 4 then | |
| 42 cb(self.conn_type.."4", self.hostname, self.port, self.extra); | |
| 43 end | |
| 44 return; | |
| 45 end | |
| 46 | |
| 47 -- Resolve DNS to target list | 37 -- Resolve DNS to target list |
| 48 local dns_resolver = adns.resolver(); | 38 local dns_resolver = adns.resolver(); |
| 49 dns_resolver:lookup(function (answer) | 39 dns_resolver:lookup(function (answer) |
| 50 if answer then | 40 if answer then |
| 51 for _, record in ipairs(answer) do | 41 for _, record in ipairs(answer) do |
| 64 ready(); | 54 ready(); |
| 65 end, self.hostname, "AAAA", "IN"); | 55 end, self.hostname, "AAAA", "IN"); |
| 66 end | 56 end |
| 67 | 57 |
| 68 local function new(hostname, port, conn_type, extra) | 58 local function new(hostname, port, conn_type, extra) |
| 59 local ascii_host = idna_to_ascii(hostname); | |
| 60 local targets = nil; | |
| 61 | |
| 62 local is_ip = inet_pton(hostname); | |
| 63 if not is_ip and hostname:sub(1,1) == '[' then | |
| 64 is_ip = inet_pton(hostname:sub(2,-2)); | |
| 65 end | |
| 66 if is_ip then | |
| 67 if #is_ip == 16 then | |
| 68 targets = { { conn_type.."6", hostname, port, extra } }; | |
| 69 elseif #is_ip == 4 then | |
| 70 targets = { { conn_type.."4", hostname, port, extra } }; | |
| 71 end | |
| 72 end | |
| 73 | |
| 69 return setmetatable({ | 74 return setmetatable({ |
| 70 hostname = idna_to_ascii(hostname); | 75 hostname = ascii_host; |
| 71 port = port; | 76 port = port; |
| 72 conn_type = conn_type or "tcp"; | 77 conn_type = conn_type or "tcp"; |
| 73 extra = extra; | 78 extra = extra; |
| 79 targets = targets; | |
| 74 }, resolver_mt); | 80 }, resolver_mt); |
| 75 end | 81 end |
| 76 | 82 |
| 77 return { | 83 return { |
| 78 new = new; | 84 new = new; |