net.dns: Support for parsing PTR records
[prosody.git] / net / dns.lua
index dbb4fc49b49f6975fb094581552cbc46a5027840..29d9cf36d227a52df80b9e4ae75a730e094b4e2c 100644 (file)
@@ -438,6 +438,9 @@ function resolver:SRV(rr)    -- - - - - - - - - - - - - - - - - - - - - -  SRV
          rr.srv.target   = self:name();
 end
 
+function resolver:PTR(rr)
+       rr.ptr = self:name();
+end
 
 function SRV_tostring(rr)    -- - - - - - - - - - - - - - - - - - SRV_tostring
        local s = rr.srv;
@@ -699,7 +702,7 @@ function resolver:query(qname, qtype, qclass)    -- - - - - - - - - - -- query
                                        return self.timeout;
                                else
                                        -- Tried everything, failed
-                                       resolver:cancel(qclass, qtype, qname, co, true);
+                                       self:cancel(qclass, qtype, qname, co, true);
                                end
                        end
                end)
@@ -798,11 +801,11 @@ function resolver:receive(rset)    -- - - - - - - - - - - - - - - - -  receive
 end
 
 
-function resolver:feed(sock, packet)
+function resolver:feed(sock, packet, force)
        --print('receive'); print(self.socket);
        self.time = socket.gettime();
 
-       local response = self:decode(packet);
+       local response = self:decode(packet, force);
        if response and self.active[response.header.id]
                and self.active[response.header.id][response.question.raw] then
                --print('received response');
@@ -993,6 +996,10 @@ function dns.cancel(...)  -- - - - - - - - - - - - - - - - - - - - - -  cancel
        return _resolver:cancel(...);
 end
 
+function dns.settimeout(...)
+       return _resolver:settimeout(...);
+end
+
 function dns.socket_wrapper_set(...)    -- - - - - - - - -  socket_wrapper_set
        return _resolver:socket_wrapper_set(...);
 end