From: Jelte Jansen Date: Wed, 28 Mar 2012 15:25:01 +0000 (+0200) Subject: [1535] do find_zone for each NS address in notify lib X-Git-Tag: trac2351_base~226^2~116^2~68^2~7 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=58283fa48ac4c232e20edb144de0dad791f429cb;p=thirdparty%2Fkea.git [1535] do find_zone for each NS address in notify lib --- diff --git a/src/lib/python/isc/notify/notify_out.py b/src/lib/python/isc/notify/notify_out.py index 6f3bec9be8..bfa7167309 100644 --- a/src/lib/python/isc/notify/notify_out.py +++ b/src/lib/python/isc/notify/notify_out.py @@ -278,12 +278,12 @@ class NotifyOut: # data sources. datasrc_config = '{ "database_file": "' + self._db_file + '"}' try: - result, finder = DataSourceClient('sqlite3', - datasrc_config).find_zone( - zone_name) + ds_client = DataSourceClient('sqlite3', datasrc_config) except isc.datasrc.Error as ex: logger.error(NOTIFY_OUT_DATASRC_ACCESS_FAILURE, ex) return [] + + result, finder = ds_client.find_zone(zone_name) if result is not DataSourceClient.SUCCESS: logger.error(NOTIFY_OUT_DATASRC_ZONE_NOT_FOUND, format_zone_str(zone_name, zone_class)) @@ -307,13 +307,17 @@ class NotifyOut: ns_name = Name(ns_rdata.to_text()) if soa_mname == ns_name: continue - result, rrset, _ = finder.find(ns_name, RRType.A()) - if result is finder.SUCCESS and rrset is not None: - addrs.extend([a.to_text() for a in rrset.get_rdata()]) - - result, rrset, _ = finder.find(ns_name, RRType.AAAA()) - if result is finder.SUCCESS and rrset is not None: - addrs.extend([aaaa.to_text() for aaaa in rrset.get_rdata()]) + ns_result, ns_finder = ds_client.find_zone(ns_name) + if ns_result is DataSourceClient.SUCCESS or \ + ns_result is DataSourceClient.PARTIALMATCH: + result, rrset, _ = ns_finder.find(ns_name, RRType.A()) + if result is ns_finder.SUCCESS and rrset is not None: + addrs.extend([a.to_text() for a in rrset.get_rdata()]) + + result, rrset, _ = ns_finder.find(ns_name, RRType.AAAA()) + if result is ns_finder.SUCCESS and rrset is not None: + addrs.extend([aaaa.to_text() + for aaaa in rrset.get_rdata()]) return addrs diff --git a/src/lib/python/isc/notify/tests/testdata/test.sqlite3 b/src/lib/python/isc/notify/tests/testdata/test.sqlite3 index e3cadb033b..366514b5cb 100644 Binary files a/src/lib/python/isc/notify/tests/testdata/test.sqlite3 and b/src/lib/python/isc/notify/tests/testdata/test.sqlite3 differ