]> granicus.if.org Git - pdns/commitdiff
rec: Fix cache-only queries against a forward-zone
authorRemi Gacogne <remi.gacogne@powerdns.com>
Mon, 3 Apr 2017 08:45:58 +0000 (10:45 +0200)
committerPieter Lexis <pieter.lexis@powerdns.com>
Tue, 4 Apr 2017 15:11:25 +0000 (17:11 +0200)
We used to pass the return code from `asyncresolve` directly to the
caller, leading the success code (1) to be interpreted as `RCode::FormErr`.

pdns/syncres.cc

index d059991bd0c3ddbe9b4c77cdf8c094645eb186cf..affb0e4a8f92f908b03a041e514cd7013a804cec 100644 (file)
@@ -490,12 +490,16 @@ int SyncRes::doResolve(const DNSName &qname, const QType &qtype, vector<DNSRecor
          boost::optional<Netmask> nm;
           res=asyncresolveWrapper(remoteIP, d_doDNSSEC, qname, qtype.getCode(), false, false, &d_now, nm, &lwr);
           // filter out the good stuff from lwr.result()
-
-         for(const auto& rec : lwr.d_records) {
-            if(rec.d_place == DNSResourceRecord::ANSWER)
-              ret.push_back(rec);
+          if (res == 1) {
+            for(const auto& rec : lwr.d_records) {
+              if(rec.d_place == DNSResourceRecord::ANSWER)
+                ret.push_back(rec);
+            }
+            return 0;
+          }
+          else {
+            return RCode::ServFail;
           }
-          return res;
         }
       }
     }