s2smanager: More whitespace
[prosody.git] / net / dns.lua
index 04b2cf22d8185cd1b9553755521fcb8df6ec3d04..08bc53a9fdb13b3b5ddedf2c9f39104cb2bc7abb 100644 (file)
@@ -726,26 +726,26 @@ function resolver:receive(rset)    -- - - - - - - - - - - - - - - - -  receive
                        local packet = sock:receive();
                        if packet then
                                response = self:decode(packet);
-                               if response then
+                               if response and self.active[response.header.id]
+                                       and self.active[response.header.id][response.question.raw] then
                                        --print('received response');
                                        --self.print(response);
 
-                                       for i,section in pairs({ 'answer', 'authority', 'additional' }) do
-                                               for j,rr in pairs(response[section]) do
+                                       for j,rr in pairs(response.answer) do
+                                               if rr.name:sub(-#response.question[1].name, -1) == response.question[1].name then
                                                        self:remember(rr, response.question[1].type)
                                                end
                                        end
 
                                        -- retire the query
                                        local queries = self.active[response.header.id];
-                                       if queries[response.question.raw] then
-                                               queries[response.question.raw] = nil;
-                                       end
+                                       queries[response.question.raw] = nil;
+                                       
                                        if not next(queries) then self.active[response.header.id] = nil; end
                                        if not next(self.active) then self:closeall(); end
 
                                        -- was the query on the wanted list?
-                                       local q = response.question;
+                                       local q = response.question[1];
                                        local cos = get(self.wanted, q.class, q.type, q.name);
                                        if cos then
                                                for co in pairs(cos) do
@@ -768,21 +768,18 @@ function resolver:feed(sock, packet)
        self.time = socket.gettime();
 
        local response = self:decode(packet);
-       if response then
+       if response and self.active[response.header.id]
+               and self.active[response.header.id][response.question.raw] then
                --print('received response');
                --self.print(response);
 
-               for i,section in pairs({ 'answer', 'authority', 'additional' }) do
-                       for j,rr in pairs(response[section]) do
-                               self:remember(rr, response.question[1].type);
-                       end
+               for j,rr in pairs(response.answer) do
+                       self:remember(rr, response.question[1].type);
                end
 
                -- retire the query
                local queries = self.active[response.header.id];
-               if queries[response.question.raw] then
-                       queries[response.question.raw] = nil;
-               end
+               queries[response.question.raw] = nil;
                if not next(queries) then self.active[response.header.id] = nil; end
                if not next(self.active) then self:closeall(); end