Commit 8cff1a89 authored by Mark Andrews's avatar Mark Andrews
Browse files

2647. [bug] Remove unnecessary SOA updates when a new KSK is

                        added. [RT #19913]
parent 048690a3
2647. [bug] Remove unnecessary SOA updates when a new KSK is
added. [RT #19913]
2646. [bug] Incorrect cleanup on error in socket.c. [RT #19987]
2645. [port] "gcc -m32" didn't work on amd64 and x86_64 platforms
......
......@@ -15,7 +15,7 @@
* PERFORMANCE OF THIS SOFTWARE.
*/
/* $Id: zone.c,v 1.501 2009/07/17 23:47:40 tbox Exp $ */
/* $Id: zone.c,v 1.502 2009/08/13 02:53:01 marka Exp $ */
/*! \file */
......@@ -6000,6 +6000,7 @@ zone_sign(dns_zone_t *zone) {
dst_key_t *zone_keys[MAXZONEKEYS];
isc_int32_t signatures;
isc_boolean_t check_ksk, is_ksk;
isc_boolean_t commit = ISC_FALSE;
isc_boolean_t delegation;
isc_boolean_t finishedakey = ISC_FALSE;
isc_boolean_t secureupdated = ISC_FALSE;
......@@ -6288,6 +6289,7 @@ zone_sign(dns_zone_t *zone) {
goto failure;
}
}
if (finishedakey) {
/*
* We have changed the RRset above so we need to update
......@@ -6313,6 +6315,15 @@ zone_sign(dns_zone_t *zone) {
goto failure;
}
}
/*
* Have we changed anything?
*/
if (ISC_LIST_HEAD(sig_diff.tuples) == NULL)
goto pauseall;
commit = ISC_TRUE;
result = del_sigs(zone, db, version, &zone->origin, dns_rdatatype_soa,
&sig_diff, zone_keys, nkeys, now);
if (result != ISC_R_SUCCESS) {
......@@ -6344,9 +6355,12 @@ zone_sign(dns_zone_t *zone) {
goto failure;
}
/* Write changes to journal file. */
/*
* Write changes to journal file.
*/
zone_journal(zone, &sig_diff, "zone_sign");
pauseall:
/*
* Pause all iterators so that dns_db_closeversion() can succeed.
*/
......@@ -6363,7 +6377,7 @@ zone_sign(dns_zone_t *zone) {
/*
* Everything has succeeded. Commit the changes.
*/
dns_db_closeversion(db, &version, ISC_TRUE);
dns_db_closeversion(db, &version, commit);
/*
* Everything succeeded so we can clean these up now.
......@@ -6379,9 +6393,11 @@ zone_sign(dns_zone_t *zone) {
set_resigntime(zone);
LOCK_ZONE(zone);
zone_needdump(zone, DNS_DUMP_DELAY);
UNLOCK_ZONE(zone);
if (commit) {
LOCK_ZONE(zone);
zone_needdump(zone, DNS_DUMP_DELAY);
UNLOCK_ZONE(zone);
}
failure:
/*
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment