From ccf527e2bcbff80d405b9a27fe94d8509cf2c95c Mon Sep 17 00:00:00 2001 From: Remi Gacogne Date: Mon, 18 Feb 2019 16:16:04 +0100 Subject: [PATCH] auth: Catch exception when parsing a zone's SOA in getUnfreshSlaveInfos() (cherry picked from commit a6037f784da39d9cd784226fcc1a278383eb99a1) --- pdns/backends/gsql/gsqlbackend.cc | 47 +++++++++++++++++++------------ 1 file changed, 29 insertions(+), 18 deletions(-) diff --git a/pdns/backends/gsql/gsqlbackend.cc b/pdns/backends/gsql/gsqlbackend.cc index 848fb260e..2b38ea7a0 100644 --- a/pdns/backends/gsql/gsqlbackend.cc +++ b/pdns/backends/gsql/gsqlbackend.cc @@ -370,31 +370,42 @@ void GSQLBackend::getUnfreshSlaveInfos(vector *unfreshDomains) } vector allSlaves; - int numanswers=d_result.size(); - for(int n=0;n::iterator i=allSlaves.begin();i!=allSlaves.end();++i) { - SOAData sdata; - sdata.serial=0; - sdata.refresh=0; - getSOA(i->zone,sdata); - if((time_t)(i->last_check+sdata.refresh) < time(0)) { - i->serial=sdata.serial; - unfreshDomains->push_back(*i); + for (auto& slave : allSlaves) { + try { + SOAData sdata; + sdata.serial=0; + sdata.refresh=0; + getSOA(slave.zone, sdata); + if(static_cast(slave.last_check + sdata.refresh) < time(nullptr)) { + slave.serial=sdata.serial; + unfreshDomains->push_back(slave); + } + } + catch(const std::exception& exp) { + L<