From ab33a09578931e6e307795fc4c9ff0eee16afc97 Mon Sep 17 00:00:00 2001 From: Remi Gacogne Date: Mon, 3 Apr 2017 10:45:58 +0200 Subject: [PATCH] rec: Fix cache-only queries against a forward-zone 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 | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/pdns/syncres.cc b/pdns/syncres.cc index d059991bd..affb0e4a8 100644 --- a/pdns/syncres.cc +++ b/pdns/syncres.cc @@ -490,12 +490,16 @@ int SyncRes::doResolve(const DNSName &qname, const QType &qtype, vector 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; } } } -- 2.40.0