]> git.ipfire.org Git - thirdparty/pdns.git/commitdiff
recursor: catch exception during IXFR of RPZ 3442/head
authorPieter Lexis <pieter.lexis@powerdns.com>
Wed, 24 Feb 2016 16:35:22 +0000 (17:35 +0100)
committerPieter Lexis <pieter.lexis@powerdns.com>
Wed, 24 Feb 2016 16:40:11 +0000 (17:40 +0100)
This would lead to a SIGABRT before when the IXFR failed.

pdns/reczones.cc

index 698aecf5c664d491252378713baee5a2e2626492..8b99e23ec796a6ee1a8dad197b0e501f570d8227 100644 (file)
@@ -327,8 +327,13 @@ void RPZIXFRTracker(const ComboAddress& master, const DNSName& zone, const TSIGT
     sleep(refresh);
     
     L<<Logger::Info<<"Getting IXFR deltas for "<<zone<<" from "<<master.toStringWithPort()<<", our serial: "<<std::dynamic_pointer_cast<SOARecordContent>(dr.d_content)->d_st.serial<<endl;
-
-    auto deltas = getIXFRDeltas(master, zone, dr, tt);
+    vector<pair<vector<DNSRecord>, vector<DNSRecord> > > deltas;
+    try {
+      deltas = getIXFRDeltas(master, zone, dr, tt);
+    } catch(std::runtime_error& e ){
+      L<<Logger::Warning<<e.what()<<endl;
+      continue;
+    }
     if(deltas.empty())
       continue;
     L<<Logger::Info<<"Processing "<<deltas.size()<<" delta"<<addS(deltas)<<" for RPZ "<<zone<<endl;