From: Kees Monshouwer Date: Fri, 5 Nov 2021 10:24:53 +0000 (+0100) Subject: auth: improve SOA dnsname exception handling X-Git-Tag: rec-4.6.0-beta1~6^2 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=refs%2Fpull%2F10951%2Fhead;p=thirdparty%2Fpdns.git auth: improve SOA dnsname exception handling --- diff --git a/modules/tinydnsbackend/tinydnsbackend.cc b/modules/tinydnsbackend/tinydnsbackend.cc index 9292d3803c..ae35c0feaa 100644 --- a/modules/tinydnsbackend/tinydnsbackend.cc +++ b/modules/tinydnsbackend/tinydnsbackend.cc @@ -184,7 +184,7 @@ void TinyDNSBackend::getAllDomains(vector* domains, bool getSerial, fillSOAData(rr.content, sd); di.serial = sd.serial; } - catch (const PDNSException& e) { + catch (...) { di.serial = 0; } } diff --git a/pdns/backends/gsql/gsqlbackend.cc b/pdns/backends/gsql/gsqlbackend.cc index 83ac518f89..be0c594155 100644 --- a/pdns/backends/gsql/gsqlbackend.cc +++ b/pdns/backends/gsql/gsqlbackend.cc @@ -1449,7 +1449,7 @@ void GSQLBackend::getAllDomains(vector* domains, bool getSerial, boo fillSOAData(row[2], sd); di.serial = sd.serial; } - catch (const PDNSException& e) { + catch (...) { di.serial = 0; } } diff --git a/pdns/dnsbackend.cc b/pdns/dnsbackend.cc index 719b051e06..991ab6f3d1 100644 --- a/pdns/dnsbackend.cc +++ b/pdns/dnsbackend.cc @@ -263,7 +263,7 @@ bool DNSBackend::getSOA(const DNSName &domain, SOAData &sd) fillSOAData(rr.content, sd); } } - catch (const PDNSException& e) { + catch (...) { while (this->get(rr)) { ; } diff --git a/pdns/pdnsutil.cc b/pdns/pdnsutil.cc index 8da10873ca..5007f1763b 100644 --- a/pdns/pdnsutil.cc +++ b/pdns/pdnsutil.cc @@ -272,7 +272,14 @@ static int checkZone(DNSSECKeeper &dk, UeberBackend &B, const DNSName& zone, con } } catch (const PDNSException& e) { - cout << "[Error] SOA lookup failed: " << e.reason << endl; + cout << "[Error] SOA lookup failed for zone '" << zone << "': " << e.reason << endl; + numerrors++; + if (!sd.db) { + return 1; + } + } + catch (const std::exception& e) { + cout << "[Error] SOA lookup failed for zone '" << zone << "': " << e.what() << endl; numerrors++; if (!sd.db) { return 1;