]> git.ipfire.org Git - thirdparty/pdns.git/commitdiff
Merge pull request #9297 from rgacogne/rec-no-cache-only-getdnskeys
authorRemi Gacogne <remi.gacogne@powerdns.com>
Wed, 8 Jul 2020 08:49:51 +0000 (10:49 +0200)
committerGitHub <noreply@github.com>
Wed, 8 Jul 2020 08:49:51 +0000 (10:49 +0200)
rec: Ignore cache-only for DNSKEYs retrieval

1  2 
pdns/syncres.cc

diff --cc pdns/syncres.cc
index 352229058d3c4aac1b6bc7aaff4375353510fb73,a96fdf620e90647aeed7ee0abd3751645c5b88f0..b4a8592228f83c20e9ceee53585c5c1ddd9e1ed0
@@@ -2062,12 -2062,10 +2062,14 @@@ vState SyncRes::getDSRecords(const DNSN
    std::vector<DNSRecord> dsrecords;
  
    vState state = Indeterminate;
+   const bool oldCacheOnly = setCacheOnly(false);
    int rcode = doResolve(zone, QType(QType::DS), dsrecords, depth + 1, beenthere, state);
+   setCacheOnly(oldCacheOnly);
  
 +  if (rcode == RCode::ServFail) {
 +    throw ImmediateServFailException("Server Failure while retrieving DS records for " + zone.toLogString());
 +  }
 +
    if (rcode == RCode::NoError || (rcode == RCode::NXDomain && !bogusOnNXD)) {
      uint8_t bestDigestType = 0;
  
@@@ -2334,12 -2332,10 +2336,14 @@@ vState SyncRes::getDNSKeys(const DNSNam
    LOG(d_prefix<<"Retrieving DNSKeys for "<<signer<<endl);
  
    vState state = Indeterminate;
+   const bool oldCacheOnly = setCacheOnly(false);
    int rcode = doResolve(signer, QType(QType::DNSKEY), records, depth + 1, beenthere, state);
+   setCacheOnly(oldCacheOnly);
  
 +  if (rcode == RCode::ServFail) {
 +    throw ImmediateServFailException("Server Failure while retrieving DNSKEY records for " + signer.toLogString());
 +  }
 +
    if (rcode == RCode::NoError) {
      if (state == Secure) {
        for (const auto& key : records) {