From: Kees Monshouwer Date: Wed, 17 Sep 2014 22:26:51 +0000 (+0200) Subject: fix notification for changed zones in bind backend X-Git-Tag: auth-3.4.0-rc2~7^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=refs%2Fpull%2F1717%2Fhead;p=thirdparty%2Fpdns.git fix notification for changed zones in bind backend --- diff --git a/modules/bindbackend/bindbackend2.cc b/modules/bindbackend/bindbackend2.cc index cc5f3cf8c5..f5ef1dbeba 100644 --- a/modules/bindbackend/bindbackend2.cc +++ b/modules/bindbackend/bindbackend2.cc @@ -296,19 +296,16 @@ void Bind2Backend::getUpdatedMasters(vector *changedDomains) for(state_t::const_iterator i = s_state.begin(); i != s_state.end() ; ++i) { if(!i->d_masters.empty() && this->alsoNotify.empty() && i->d_also_notify.empty()) - continue; - + continue; + DomainInfo di; di.id=i->d_id; - di.zone=i->d_name; di.last_check=i->d_lastcheck; - di.notified_serial = i->d_lastnotified; + di.notified_serial=i->d_lastnotified; di.backend=this; di.kind=DomainInfo::Master; - if(!i->d_lastnotified) { // don't do notification storm on startup - consider.push_back(di); - } + consider.push_back(di); } } @@ -318,15 +315,20 @@ void Bind2Backend::getUpdatedMasters(vector *changedDomains) try { this->getSOA(di.zone, soadata); // we might not *have* a SOA yet, but this might trigger a load of it } - catch(...){} - BB2DomainInfo bbd; - if(safeGetBBDomainInfo(di.id, &bbd)) { - bbd.d_lastnotified=soadata.serial; - safePutBBDomainInfo(bbd); + catch(...) { + continue; + } + if(di.notified_serial != soadata.serial) { + BB2DomainInfo bbd; + if(safeGetBBDomainInfo(di.id, &bbd)) { + bbd.d_lastnotified=soadata.serial; + safePutBBDomainInfo(bbd); + } + if(di.notified_serial) { // don't do notification storm on startup + di.serial=soadata.serial; + changedDomains->push_back(di); + } } - di.serial=soadata.serial; - if(soadata.serial != di.notified_serial) - changedDomains->push_back(di); } }