Software / code / prosody
Comparison
net/dns.lua @ 7098:5286e79c6829
Merge 0.9->0.10
| author | Kim Alvefur <zash@zash.se> |
|---|---|
| date | Fri, 22 Jan 2016 14:49:05 +0100 |
| parent | 7061:eda0feeaf759 |
| parent | 7093:388281be2bc7 |
| child | 7322:addf60d25356 |
comparison
equal
deleted
inserted
replaced
| 7090:7aa37d70944b | 7098:5286e79c6829 |
|---|---|
| 752 | 752 |
| 753 -- remember the query | 753 -- remember the query |
| 754 self.active[id] = self.active[id] or {}; | 754 self.active[id] = self.active[id] or {}; |
| 755 self.active[id][question] = o; | 755 self.active[id][question] = o; |
| 756 | 756 |
| 757 local conn, err = self:getsocket(o.server) | |
| 758 if not conn then | |
| 759 return nil, err; | |
| 760 end | |
| 761 conn:send (o.packet) | |
| 762 | |
| 757 -- remember which coroutine wants the answer | 763 -- remember which coroutine wants the answer |
| 758 if co then | 764 if co then |
| 759 set(self.wanted, qclass, qtype, qname, co, true); | 765 set(self.wanted, qclass, qtype, qname, co, true); |
| 760 end | 766 end |
| 761 | 767 |
| 762 local conn, err = self:getsocket(o.server) | |
| 763 if not conn then | |
| 764 return nil, err; | |
| 765 end | |
| 766 conn:send (o.packet) | |
| 767 | |
| 768 if timer and self.timeout then | 768 if timer and self.timeout then |
| 769 local num_servers = #self.server; | 769 local num_servers = #self.server; |
| 770 local i = 1; | 770 local i = 1; |
| 771 timer.add_task(self.timeout, function () | 771 timer.add_task(self.timeout, function () |
| 772 if get(self.wanted, qclass, qtype, qname, co) then | 772 if get(self.wanted, qclass, qtype, qname, co) then |
| 859 end | 859 end |
| 860 | 860 |
| 861 -- retire the query | 861 -- retire the query |
| 862 local queries = self.active[response.header.id]; | 862 local queries = self.active[response.header.id]; |
| 863 queries[response.question.raw] = nil; | 863 queries[response.question.raw] = nil; |
| 864 | 864 |
| 865 if not next(queries) then self.active[response.header.id] = nil; end | 865 if not next(queries) then self.active[response.header.id] = nil; end |
| 866 if not next(self.active) then self:closeall(); end | 866 if not next(self.active) then self:closeall(); end |
| 867 | 867 |
| 868 -- was the query on the wanted list? | 868 -- was the query on the wanted list? |
| 869 local q = response.question[1]; | 869 local q = response.question[1]; |
| 873 if coroutine.status(co) == "suspended" then coroutine.resume(co); end | 873 if coroutine.status(co) == "suspended" then coroutine.resume(co); end |
| 874 end | 874 end |
| 875 set(self.wanted, q.class, q.type, q.name, nil); | 875 set(self.wanted, q.class, q.type, q.name, nil); |
| 876 end | 876 end |
| 877 end | 877 end |
| 878 | 878 |
| 879 end | 879 end |
| 880 end | 880 end |
| 881 end | 881 end |
| 882 | 882 |
| 883 return response; | 883 return response; |