27 local ipairs, next, pairs, print, setmetatable, tostring, assert, error, unpack = |
27 local ipairs, next, pairs, print, setmetatable, tostring, assert, error, unpack = |
28 ipairs, next, pairs, print, setmetatable, tostring, assert, error, unpack; |
28 ipairs, next, pairs, print, setmetatable, tostring, assert, error, unpack; |
29 |
29 |
30 local get, set = ztact.get, ztact.set; |
30 local get, set = ztact.get, ztact.set; |
31 |
31 |
32 local dns_timeout = 15; |
32 local default_timeout = 15; |
33 |
33 |
34 -------------------------------------------------- module dns |
34 -------------------------------------------------- module dns |
35 module('dns') |
35 module('dns') |
36 local dns = _M; |
36 local dns = _M; |
37 |
37 |
682 end |
683 end |
683 |
684 |
684 local conn = self:getsocket(o.server) |
685 local conn = self:getsocket(o.server) |
685 conn:send (o.packet) |
686 conn:send (o.packet) |
686 |
687 |
687 if timer then |
688 if timer and self.timeout then |
688 local num_servers = #self.server; |
689 local num_servers = #self.server; |
689 local i = 1; |
690 local i = 1; |
690 timer.add_task(dns_timeout, function () |
691 timer.add_task(self.timeout, function () |
691 if get(self.wanted, qclass, qtype, qname, co) then |
692 if get(self.wanted, qclass, qtype, qname, co) then |
692 if i < num_servers then |
693 if i < num_servers then |
693 i = i + 1; |
694 i = i + 1; |
694 self:servfail(conn); |
695 self:servfail(conn); |
695 o.server = self.best_server; |
696 o.server = self.best_server; |
696 conn = self:getsocket(o.server); |
697 conn = self:getsocket(o.server); |
697 conn:send(o.packet); |
698 conn:send(o.packet); |
698 return dns_timeout; |
699 return self.timeout; |
699 else |
700 else |
700 -- Tried everything, failed |
701 -- Tried everything, failed |
701 resolver:cancel(qclass, qtype, qname, co, true); |
702 resolver:cancel(qclass, qtype, qname, co, true); |
702 end |
703 end |
703 end |
704 end |
740 if self.best_server > #self.server then |
741 if self.best_server > #self.server then |
741 -- Exhausted all servers, try first again |
742 -- Exhausted all servers, try first again |
742 self.best_server = 1; |
743 self.best_server = 1; |
743 end |
744 end |
744 end |
745 end |
|
746 end |
|
747 |
|
748 function resolver:settimeout(seconds) |
|
749 self.timeout = seconds; |
745 end |
750 end |
746 |
751 |
747 function resolver:receive(rset) -- - - - - - - - - - - - - - - - - receive |
752 function resolver:receive(rset) -- - - - - - - - - - - - - - - - - receive |
748 --print('receive'); print(self.socket); |
753 --print('receive'); print(self.socket); |
749 self.time = socket.gettime(); |
754 self.time = socket.gettime(); |