fix notification for changed zones in bind backend
authorKees Monshouwer <mind04@monshouwer.org>
Wed, 17 Sep 2014 22:26:51 +0000 (00:26 +0200)
committermind04 <mind04@monshouwer.org>
Thu, 18 Sep 2014 14:18:21 +0000 (16:18 +0200)
modules/bindbackend/bindbackend2.cc

index cc5f3cf8c508659a06930eefe70d586b2bfc1de4..f5ef1dbeba6a097042d7a732565089fbe9ac7e61 100644 (file)
@@ -296,19 +296,16 @@ void Bind2Backend::getUpdatedMasters(vector<DomainInfo> *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<DomainInfo> *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);
   }
 }