696 conn = self:getsocket(o.server); |
696 conn = self:getsocket(o.server); |
697 conn:send(o.packet); |
697 conn:send(o.packet); |
698 return dns_timeout; |
698 return dns_timeout; |
699 else |
699 else |
700 -- Tried everything, failed |
700 -- Tried everything, failed |
701 resolver:cancel({qclass, qtype, qname, co}, true); |
701 resolver:cancel(qclass, qtype, qname, co, true); |
702 end |
702 end |
703 end |
703 end |
704 end) |
704 end) |
705 end |
705 end |
706 end |
706 end |
828 end |
828 end |
829 |
829 |
830 return response; |
830 return response; |
831 end |
831 end |
832 |
832 |
833 function resolver:cancel(data, call_handler) |
833 function resolver:cancel(qclass, qtype, qname, co, call_handler) |
834 local cos = get(self.wanted, unpack(data, 1, 3)); |
834 local cos = get(self.wanted, qclass, qtype, qname); |
835 if cos then |
835 if cos then |
836 if call_handler then |
836 if call_handler then |
837 coroutine.resume(data[4]); |
837 coroutine.resume(co); |
838 end |
838 end |
839 cos[data[4]] = nil; |
839 cos[co] = nil; |
840 end |
840 end |
841 end |
841 end |
842 |
842 |
843 function resolver:pulse() -- - - - - - - - - - - - - - - - - - - - - pulse |
843 function resolver:pulse() -- - - - - - - - - - - - - - - - - - - - - pulse |
844 --print(':pulse'); |
844 --print(':pulse'); |