BIND 10 trac1153, updated. af6328603521584ff62b25a6f86a923bba5a4f5e [trac1153] consider missing zones as expired
BIND 10 source code commits
bind10-changes at lists.isc.org
Mon Aug 22 11:04:15 UTC 2011
The branch, trac1153 has been updated
via af6328603521584ff62b25a6f86a923bba5a4f5e (commit)
from 28988a78d3b80c7f1080fce696acf176b74a29fe (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit af6328603521584ff62b25a6f86a923bba5a4f5e
Author: chenzhengzhang <jerry.zzpku at gmail.com>
Date: Mon Aug 22 19:03:38 2011 +0800
[trac1153] consider missing zones as expired
-----------------------------------------------------------------------
Summary of changes:
src/bin/zonemgr/tests/zonemgr_test.py | 9 ++++++
src/bin/zonemgr/zonemgr.py.in | 51 +++++++++++++++++---------------
2 files changed, 36 insertions(+), 24 deletions(-)
-----------------------------------------------------------------------
diff --git a/src/bin/zonemgr/tests/zonemgr_test.py b/src/bin/zonemgr/tests/zonemgr_test.py
index 4fe468f..80e41b3 100644
--- a/src/bin/zonemgr/tests/zonemgr_test.py
+++ b/src/bin/zonemgr/tests/zonemgr_test.py
@@ -372,6 +372,15 @@ class TestZonemgrRefresh(unittest.TestCase):
self.assertRaises(ZonemgrException, self.zone_refresh.zone_refresh_fail, ZONE_NAME_CLASS3_CH)
self.assertRaises(ZonemgrException, self.zone_refresh.zone_refresh_fail, ZONE_NAME_CLASS3_IN)
+ old_get_zone_soa = sqlite3_ds.get_zone_soa
+ def get_zone_soa(zone_name, db_file):
+ return None
+ sqlite3_ds.get_zone_soa = get_zone_soa
+ self.zone_refresh.zone_refresh_fail(ZONE_NAME_CLASS1_IN)
+ self.assertEqual(self.zone_refresh._zonemgr_refresh_info[ZONE_NAME_CLASS1_IN]["zone_state"],
+ ZONE_EXPIRED)
+ sqlite3_ds.get_zone_soa = old_get_zone_soa
+
def test_find_need_do_refresh_zone(self):
time1 = time.time()
self.zone_refresh._zonemgr_refresh_info = {
diff --git a/src/bin/zonemgr/zonemgr.py.in b/src/bin/zonemgr/zonemgr.py.in
index dff2e68..d4de6a8 100755
--- a/src/bin/zonemgr/zonemgr.py.in
+++ b/src/bin/zonemgr/zonemgr.py.in
@@ -177,7 +177,7 @@ class ZonemgrRefresh:
raise ZonemgrException("[b10-zonemgr] Zone (%s, %s) doesn't "
"belong to zonemgr" % zone_name_class)
# Is zone expired?
- if ((self._get_zone_soa_rdata(zone_name_class) is not None) and
+ if ((self._get_zone_soa_rdata(zone_name_class) is None) or
self._zone_is_expired(zone_name_class)):
self._set_zone_state(zone_name_class, ZONE_EXPIRED)
else:
@@ -450,29 +450,32 @@ class ZonemgrRefresh:
self._reload_jitter = val_or_default(
new_config.get('reload_jitter'), self._reload_jitter)
- required = {}
- secondary_zones = new_config.get('secondary_zones')
- if secondary_zones is not None:
- # Add new zones
- for secondary_zone in new_config.get('secondary_zones'):
- name = secondary_zone['name']
- # Be tolerant to sclerotic users who forget the final dot
- if name[-1] != '.':
- name = name + '.'
- name_class = (name, secondary_zone['class'])
- required[name_class] = True
- # Add it only if it isn't there already
- if not name_class in self._zonemgr_refresh_info:
- # If we are not able to find it in database, log an warning
- self.zonemgr_add_zone(name_class)
- # Drop the zones that are no longer there
- # Do it in two phases, python doesn't like deleting while iterating
- to_drop = []
- for old_zone in self._zonemgr_refresh_info:
- if not old_zone in required:
- to_drop.append(old_zone)
- for drop in to_drop:
- del self._zonemgr_refresh_info[drop]
+ try:
+ required = {}
+ secondary_zones = new_config.get('secondary_zones')
+ if secondary_zones is not None:
+ # Add new zones
+ for secondary_zone in new_config.get('secondary_zones'):
+ name = secondary_zone['name']
+ # Be tolerant to sclerotic users who forget the final dot
+ if name[-1] != '.':
+ name = name + '.'
+ name_class = (name, secondary_zone['class'])
+ required[name_class] = True
+ # Add it only if it isn't there already
+ if not name_class in self._zonemgr_refresh_info:
+ # If we are not able to find it in database, log an warning
+ self.zonemgr_add_zone(name_class)
+ # Drop the zones that are no longer there
+ # Do it in two phases, python doesn't like deleting while iterating
+ to_drop = []
+ for old_zone in self._zonemgr_refresh_info:
+ if not old_zone in required:
+ to_drop.append(old_zone)
+ for drop in to_drop:
+ del self._zonemgr_refresh_info[drop]
+ except:
+ raise
class Zonemgr:
"""Zone manager class."""
More information about the bind10-changes
mailing list