From 7dd6ba6c70273fef0ffd34b265e6f1a1b6988a26 Mon Sep 17 00:00:00 2001 From: Petr Spacek Date: Fri, 7 Nov 2014 15:12:38 +0100 Subject: [PATCH] Send DNS NOTIFY message after any modification to the zone. https://fedorahosted.org/bind-dyndb-ldap/ticket/144 --- src/ldap_helper.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/ldap_helper.c b/src/ldap_helper.c index dac11396857aa69d67243b3bc275cf9714be2238..ddb787c152b522118357bb6dc5542dce6af8ee0e 100644 --- a/src/ldap_helper.c +++ b/src/ldap_helper.c @@ -1017,7 +1017,7 @@ cleanup: * @warning Never call this on raw part of in-line secure zone. */ static isc_result_t ATTR_NONNULLS ATTR_CHECKRESULT -load_zone(dns_zone_t *zone) { +load_zone(dns_zone_t *zone, isc_boolean_t log) { isc_result_t result; isc_boolean_t zone_dynamic; isc_uint32_t serial; @@ -1036,15 +1036,18 @@ load_zone(dns_zone_t *zone) { } CHECK(dns_zone_getserial2(raw, &serial)); - dns_zone_log(raw, ISC_LOG_INFO, "loaded serial %u", serial); + if (log == ISC_TRUE) + dns_zone_log(raw, ISC_LOG_INFO, "loaded serial %u", serial); if (zone != NULL) { result = dns_zone_getserial2(zone, &serial); - if (result == ISC_R_SUCCESS) + if (result == ISC_R_SUCCESS && log == ISC_TRUE) dns_zone_log(zone, ISC_LOG_INFO, "loaded serial %u", serial); /* in-line secure zone is loaded asynchonously in background */ else if (result == DNS_R_NOTLOADED) { - dns_zone_log(zone, ISC_LOG_INFO, "signing in progress"); + if (log == ISC_TRUE) + dns_zone_log(zone, ISC_LOG_INFO, + "signing in progress"); result = ISC_R_SUCCESS; } else goto cleanup; @@ -1154,7 +1157,7 @@ activate_zone(isc_task_t *task, ldap_instance_t *inst, dns_name_t *name) { goto cleanup; } - CHECK(load_zone(toview)); + CHECK(load_zone(toview, ISC_TRUE)); if (secure != NULL) { CHECK(zr_get_zone_settings(inst->zone_register, name, &zone_settings)); @@ -2491,9 +2494,7 @@ ldap_parse_master_zoneentry(ldap_entry_t * const entry, dns_db_t * const olddb, if (isactive == ISC_TRUE) { if (new_zone == ISC_TRUE || activity_changed == ISC_TRUE) CHECK(publish_zone(task, inst, toview)); - if (data_changed == ISC_TRUE || olddb != NULL || - activity_changed == ISC_TRUE) - CHECK(load_zone(toview)); + CHECK(load_zone(toview, ISC_FALSE)); } else if (activity_changed == ISC_TRUE) { /* Zone was deactivated */ CHECK(unpublish_zone(inst, &name, entry->dn)); dns_zone_log(toview, ISC_LOG_INFO, "zone deactivated " @@ -4668,9 +4669,9 @@ cleanup: "reload triggered by change in '%s'", pevent->dn); if (secure != NULL) - result = load_zone(secure); + result = load_zone(secure, ISC_TRUE); else if (raw != NULL) - result = load_zone(raw); + result = load_zone(raw, ISC_TRUE); if (result == ISC_R_SUCCESS || result == DNS_R_UPTODATE || result == DNS_R_DYNAMIC || result == DNS_R_CONTINUE) { /* zone reload succeeded, fire current event again */ -- 2.1.0