|
 |
5d1446 |
commit 0f835f7eff5bbd45461b9b43276267ff3c953ece
|
|
 |
5d1446 |
Author: Tomas Korbar <tkorbar@redhat.com>
|
|
 |
5d1446 |
Date: Fri Nov 13 10:23:42 2020 +0100
|
|
 |
5d1446 |
|
|
 |
5d1446 |
Fix inline resigning
|
|
 |
5d1446 |
|
|
 |
5d1446 |
diff --git a/bin/tests/system/conf.sh.in b/bin/tests/system/conf.sh.in
|
|
 |
5d1446 |
index 564c084..5cd0b05 100644
|
|
 |
5d1446 |
--- a/bin/tests/system/conf.sh.in
|
|
 |
5d1446 |
+++ b/bin/tests/system/conf.sh.in
|
|
 |
5d1446 |
@@ -69,6 +69,8 @@ LWTEST=$TOP/bin/tests/system/lwresd/lwtest
|
|
 |
5d1446 |
MAKEJOURNAL=$TOP/bin/tests/makejournal
|
|
 |
5d1446 |
PIPEQUERIES=$TOP/bin/tests/system/pipelined/pipequeries
|
|
 |
5d1446 |
SAMPLEUPDATE=$TOP/lib/samples/sample-update
|
|
 |
5d1446 |
+DEFAULT_ALGORITHM=ECDSAP256SHA256
|
|
 |
5d1446 |
+DEFAULT_BITS=256
|
|
 |
5d1446 |
|
|
 |
5d1446 |
# we don't want a KRB5_CONFIG setting breaking the tests
|
|
 |
5d1446 |
KRB5_CONFIG=/dev/null
|
|
 |
5d1446 |
@@ -364,3 +366,5 @@ export SAMPLEUPDATE
|
|
 |
5d1446 |
export SIGNER
|
|
 |
5d1446 |
export SUBDIRS
|
|
 |
5d1446 |
export TESTSOCK6
|
|
 |
5d1446 |
+export DEFAULT_ALGORITHM
|
|
 |
5d1446 |
+export DEFAULT_BITS
|
|
 |
5d1446 |
diff --git a/bin/tests/system/inline/ns8/example.com.db.in b/bin/tests/system/inline/ns8/example.com.db.in
|
|
 |
5d1446 |
new file mode 100644
|
|
 |
5d1446 |
index 0000000..eb39aa7
|
|
 |
5d1446 |
--- /dev/null
|
|
 |
5d1446 |
+++ b/bin/tests/system/inline/ns8/example.com.db.in
|
|
 |
5d1446 |
@@ -0,0 +1,19 @@
|
|
 |
5d1446 |
+; Copyright (C) Internet Systems Consortium, Inc. ("ISC")
|
|
 |
5d1446 |
+;
|
|
 |
5d1446 |
+; This Source Code Form is subject to the terms of the Mozilla Public
|
|
 |
5d1446 |
+; License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
 |
5d1446 |
+; file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
 |
5d1446 |
+;
|
|
 |
5d1446 |
+; See the COPYRIGHT file distributed with this work for additional
|
|
 |
5d1446 |
+; information regarding copyright ownership.
|
|
 |
5d1446 |
+
|
|
 |
5d1446 |
+$TTL 300 ; 5 minutes
|
|
 |
5d1446 |
+@ IN SOA ns8 . (
|
|
 |
5d1446 |
+ 2000042407 ; serial
|
|
 |
5d1446 |
+ 20 ; refresh (20 seconds)
|
|
 |
5d1446 |
+ 20 ; retry (20 seconds)
|
|
 |
5d1446 |
+ 1814400 ; expire (3 weeks)
|
|
 |
5d1446 |
+ 3600 ; minimum (1 hour)
|
|
 |
5d1446 |
+ )
|
|
 |
5d1446 |
+ NS ns8
|
|
 |
5d1446 |
+ns8 A 10.53.0.8
|
|
 |
5d1446 |
diff --git a/bin/tests/system/inline/ns8/named.conf.in b/bin/tests/system/inline/ns8/named.conf.in
|
|
 |
5d1446 |
new file mode 100644
|
|
 |
5d1446 |
index 0000000..ea4876b
|
|
 |
5d1446 |
--- /dev/null
|
|
 |
5d1446 |
+++ b/bin/tests/system/inline/ns8/named.conf.in
|
|
 |
5d1446 |
@@ -0,0 +1,146 @@
|
|
 |
5d1446 |
+/*
|
|
 |
5d1446 |
+ * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
|
|
 |
5d1446 |
+ *
|
|
 |
5d1446 |
+ * This Source Code Form is subject to the terms of the Mozilla Public
|
|
 |
5d1446 |
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
 |
5d1446 |
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
 |
5d1446 |
+ *
|
|
 |
5d1446 |
+ * See the COPYRIGHT file distributed with this work for additional
|
|
 |
5d1446 |
+ * information regarding copyright ownership.
|
|
 |
5d1446 |
+ */
|
|
 |
5d1446 |
+
|
|
 |
5d1446 |
+// NS8
|
|
 |
5d1446 |
+
|
|
 |
5d1446 |
+include "../../common/rndc.key";
|
|
 |
5d1446 |
+
|
|
 |
5d1446 |
+controls {
|
|
 |
5d1446 |
+ inet 10.53.0.8 port @CONTROLPORT@ allow { any; } keys { rndc_key; };
|
|
 |
5d1446 |
+};
|
|
 |
5d1446 |
+
|
|
 |
5d1446 |
+options {
|
|
 |
5d1446 |
+ query-source address 10.53.0.8;
|
|
 |
5d1446 |
+ notify-source 10.53.0.8;
|
|
 |
5d1446 |
+ transfer-source 10.53.0.8;
|
|
 |
5d1446 |
+ port @PORT@;
|
|
 |
5d1446 |
+ pid-file "named.pid";
|
|
 |
5d1446 |
+ session-keyfile "session.key";
|
|
 |
5d1446 |
+ listen-on { 10.53.0.8; };
|
|
 |
5d1446 |
+ listen-on-v6 { none; };
|
|
 |
5d1446 |
+ recursion no;
|
|
 |
5d1446 |
+ notify yes;
|
|
 |
5d1446 |
+ try-tcp-refresh no;
|
|
 |
5d1446 |
+ notify-delay 0;
|
|
 |
5d1446 |
+ allow-new-zones yes;
|
|
 |
5d1446 |
+};
|
|
 |
5d1446 |
+
|
|
 |
5d1446 |
+zone "example01.com" {
|
|
 |
5d1446 |
+ type master;
|
|
 |
5d1446 |
+ inline-signing yes;
|
|
 |
5d1446 |
+ auto-dnssec maintain;
|
|
 |
5d1446 |
+ file "example01.com.db";
|
|
 |
5d1446 |
+};
|
|
 |
5d1446 |
+
|
|
 |
5d1446 |
+zone "example02.com" {
|
|
 |
5d1446 |
+ type master;
|
|
 |
5d1446 |
+ inline-signing yes;
|
|
 |
5d1446 |
+ auto-dnssec maintain;
|
|
 |
5d1446 |
+ file "example02.com.db";
|
|
 |
5d1446 |
+};
|
|
 |
5d1446 |
+
|
|
 |
5d1446 |
+zone "example03.com" {
|
|
 |
5d1446 |
+ type master;
|
|
 |
5d1446 |
+ inline-signing yes;
|
|
 |
5d1446 |
+ auto-dnssec maintain;
|
|
 |
5d1446 |
+ file "example03.com.db";
|
|
 |
5d1446 |
+};
|
|
 |
5d1446 |
+
|
|
 |
5d1446 |
+zone "example04.com" {
|
|
 |
5d1446 |
+ type master;
|
|
 |
5d1446 |
+ inline-signing yes;
|
|
 |
5d1446 |
+ auto-dnssec maintain;
|
|
 |
5d1446 |
+ file "example04.com.db";
|
|
 |
5d1446 |
+};
|
|
 |
5d1446 |
+
|
|
 |
5d1446 |
+zone "example05.com" {
|
|
 |
5d1446 |
+ type master;
|
|
 |
5d1446 |
+ inline-signing yes;
|
|
 |
5d1446 |
+ auto-dnssec maintain;
|
|
 |
5d1446 |
+ file "example05.com.db";
|
|
 |
5d1446 |
+};
|
|
 |
5d1446 |
+
|
|
 |
5d1446 |
+zone "example06.com" {
|
|
 |
5d1446 |
+ type master;
|
|
 |
5d1446 |
+ inline-signing yes;
|
|
 |
5d1446 |
+ auto-dnssec maintain;
|
|
 |
5d1446 |
+ file "example06.com.db";
|
|
 |
5d1446 |
+};
|
|
 |
5d1446 |
+
|
|
 |
5d1446 |
+zone "example07.com" {
|
|
 |
5d1446 |
+ type master;
|
|
 |
5d1446 |
+ inline-signing yes;
|
|
 |
5d1446 |
+ auto-dnssec maintain;
|
|
 |
5d1446 |
+ file "example07.com.db";
|
|
 |
5d1446 |
+};
|
|
 |
5d1446 |
+
|
|
 |
5d1446 |
+zone "example08.com" {
|
|
 |
5d1446 |
+ type master;
|
|
 |
5d1446 |
+ inline-signing yes;
|
|
 |
5d1446 |
+ auto-dnssec maintain;
|
|
 |
5d1446 |
+ file "example08.com.db";
|
|
 |
5d1446 |
+};
|
|
 |
5d1446 |
+
|
|
 |
5d1446 |
+zone "example09.com" {
|
|
 |
5d1446 |
+ type master;
|
|
 |
5d1446 |
+ inline-signing yes;
|
|
 |
5d1446 |
+ auto-dnssec maintain;
|
|
 |
5d1446 |
+ file "example09.com.db";
|
|
 |
5d1446 |
+};
|
|
 |
5d1446 |
+
|
|
 |
5d1446 |
+zone "example10.com" {
|
|
 |
5d1446 |
+ type master;
|
|
 |
5d1446 |
+ inline-signing yes;
|
|
 |
5d1446 |
+ auto-dnssec maintain;
|
|
 |
5d1446 |
+ file "example10.com.db";
|
|
 |
5d1446 |
+};
|
|
 |
5d1446 |
+
|
|
 |
5d1446 |
+zone "example11.com" {
|
|
 |
5d1446 |
+ type master;
|
|
 |
5d1446 |
+ inline-signing yes;
|
|
 |
5d1446 |
+ auto-dnssec maintain;
|
|
 |
5d1446 |
+ file "example11.com.db";
|
|
 |
5d1446 |
+};
|
|
 |
5d1446 |
+
|
|
 |
5d1446 |
+zone "example12.com" {
|
|
 |
5d1446 |
+ type master;
|
|
 |
5d1446 |
+ inline-signing yes;
|
|
 |
5d1446 |
+ auto-dnssec maintain;
|
|
 |
5d1446 |
+ file "example12.com.db";
|
|
 |
5d1446 |
+};
|
|
 |
5d1446 |
+
|
|
 |
5d1446 |
+zone "example13.com" {
|
|
 |
5d1446 |
+ type master;
|
|
 |
5d1446 |
+ inline-signing yes;
|
|
 |
5d1446 |
+ auto-dnssec maintain;
|
|
 |
5d1446 |
+ file "example13.com.db";
|
|
 |
5d1446 |
+};
|
|
 |
5d1446 |
+
|
|
 |
5d1446 |
+zone "example14.com" {
|
|
 |
5d1446 |
+ type master;
|
|
 |
5d1446 |
+ inline-signing yes;
|
|
 |
5d1446 |
+ auto-dnssec maintain;
|
|
 |
5d1446 |
+ file "example14.com.db";
|
|
 |
5d1446 |
+};
|
|
 |
5d1446 |
+
|
|
 |
5d1446 |
+zone "example15.com" {
|
|
 |
5d1446 |
+ type master;
|
|
 |
5d1446 |
+ inline-signing yes;
|
|
 |
5d1446 |
+ auto-dnssec maintain;
|
|
 |
5d1446 |
+ file "example15.com.db";
|
|
 |
5d1446 |
+};
|
|
 |
5d1446 |
+
|
|
 |
5d1446 |
+zone "example16.com" {
|
|
 |
5d1446 |
+ type master;
|
|
 |
5d1446 |
+ inline-signing yes;
|
|
 |
5d1446 |
+ auto-dnssec maintain;
|
|
 |
5d1446 |
+ file "example16.com.db";
|
|
 |
5d1446 |
+};
|
|
 |
5d1446 |
diff --git a/bin/tests/system/inline/ns8/sign.sh b/bin/tests/system/inline/ns8/sign.sh
|
|
 |
5d1446 |
new file mode 100644
|
|
 |
5d1446 |
index 0000000..5d36cb9
|
|
 |
5d1446 |
--- /dev/null
|
|
 |
5d1446 |
+++ b/bin/tests/system/inline/ns8/sign.sh
|
|
 |
5d1446 |
@@ -0,0 +1,26 @@
|
|
 |
5d1446 |
+#!/bin/sh -e
|
|
 |
5d1446 |
+#
|
|
 |
5d1446 |
+# Copyright (C) Internet Systems Consortium, Inc. ("ISC")
|
|
 |
5d1446 |
+#
|
|
 |
5d1446 |
+# This Source Code Form is subject to the terms of the Mozilla Public
|
|
 |
5d1446 |
+# License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
 |
5d1446 |
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
 |
5d1446 |
+#
|
|
 |
5d1446 |
+# See the COPYRIGHT file distributed with this work for additional
|
|
 |
5d1446 |
+# information regarding copyright ownership.
|
|
 |
5d1446 |
+
|
|
 |
5d1446 |
+SYSTEMTESTTOP=../..
|
|
 |
5d1446 |
+. $SYSTEMTESTTOP/conf.sh
|
|
 |
5d1446 |
+
|
|
 |
5d1446 |
+for zone in example01.com example02.com example03.com example04.com \
|
|
 |
5d1446 |
+ example05.com example06.com example07.com example08.com \
|
|
 |
5d1446 |
+ example09.com example10.com example11.com example12.com \
|
|
 |
5d1446 |
+ example13.com example14.com example15.com example16.com
|
|
 |
5d1446 |
+do
|
|
 |
5d1446 |
+ rm -f K${zone}.+*+*.key
|
|
 |
5d1446 |
+ rm -f K${zone}.+*+*.private
|
|
 |
5d1446 |
+ keyname=`$KEYGEN -q -a $DEFAULT_ALGORITHM -b $DEFAULT_BITS -n zone $zone`
|
|
 |
5d1446 |
+ keyname=`$KEYGEN -q -a $DEFAULT_ALGORITHM -b $DEFAULT_BITS -n zone -f KSK $zone`
|
|
 |
5d1446 |
+ cp example.com.db.in ${zone}.db
|
|
 |
5d1446 |
+ $SIGNER -S -T 3600 -O raw -o ${zone} ${zone}.db > /dev/null 2>&1
|
|
 |
5d1446 |
+done
|
|
 |
5d1446 |
diff --git a/bin/tests/system/inline/setup.sh b/bin/tests/system/inline/setup.sh
|
|
 |
5d1446 |
index 4dd4dd0..13dd6c7 100644
|
|
 |
5d1446 |
--- a/bin/tests/system/inline/setup.sh
|
|
 |
5d1446 |
+++ b/bin/tests/system/inline/setup.sh
|
|
 |
5d1446 |
@@ -49,7 +49,9 @@ copy_setports ns4/named.conf.in ns4/named.conf
|
|
 |
5d1446 |
copy_setports ns5/named.conf.pre ns5/named.conf
|
|
 |
5d1446 |
copy_setports ns6/named.conf.in ns6/named.conf
|
|
 |
5d1446 |
copy_setports ns7/named.conf.in ns7/named.conf
|
|
 |
5d1446 |
+copy_setports ns8/named.conf.in ns8/named.conf
|
|
 |
5d1446 |
|
|
 |
5d1446 |
(cd ns3; $SHELL -e sign.sh)
|
|
 |
5d1446 |
(cd ns1; $SHELL -e sign.sh)
|
|
 |
5d1446 |
(cd ns7; $SHELL -e sign.sh)
|
|
 |
5d1446 |
+(cd ns8; $SHELL -e sign.sh)
|
|
 |
5d1446 |
diff --git a/bin/tests/system/inline/tests.sh b/bin/tests/system/inline/tests.sh
|
|
 |
5d1446 |
index b517138..22fc1af 100755
|
|
 |
5d1446 |
--- a/bin/tests/system/inline/tests.sh
|
|
 |
5d1446 |
+++ b/bin/tests/system/inline/tests.sh
|
|
 |
5d1446 |
@@ -1342,5 +1342,24 @@ grep "type: slave" rndc.out.ns3.test$n > /dev/null || ret=1
|
|
 |
5d1446 |
if [ $ret != 0 ]; then echo_i "failed"; fi
|
|
 |
5d1446 |
status=`expr $status + $ret`
|
|
 |
5d1446 |
|
|
 |
5d1446 |
+n=`expr $n + 1`
|
|
 |
5d1446 |
+echo_i "checking reload of touched inline zones ($n)"
|
|
 |
5d1446 |
+echo_ic "pre-reload 'next key event'"
|
|
 |
5d1446 |
+nextpart ns8/named.run > nextpart.pre$n.out
|
|
 |
5d1446 |
+count=`grep "zone example[0-9][0-9].com/IN (signed): next key event:" nextpart.pre$n.out | wc -l`
|
|
 |
5d1446 |
+echo_ic "found: $count/16"
|
|
 |
5d1446 |
+[ $count -eq 16 ] || ret=1
|
|
 |
5d1446 |
+echo_ic "touch and reload"
|
|
 |
5d1446 |
+touch ns8/example??.com.db
|
|
 |
5d1446 |
+$RNDCCMD 10.53.0.8 reload 2>&1 | sed 's/^/ns3 /' | cat_i
|
|
 |
5d1446 |
+sleep 5
|
|
 |
5d1446 |
+echo_ic "post-reload 'next key event'"
|
|
 |
5d1446 |
+nextpart ns8/named.run > nextpart.post$n.out
|
|
 |
5d1446 |
+count=`grep "zone example[0-9][0-9].com/IN (signed): next key event:" nextpart.post$n.out | wc -l`
|
|
 |
5d1446 |
+echo_ic "found: $count/16"
|
|
 |
5d1446 |
+[ $count -eq 16 ] || ret=1
|
|
 |
5d1446 |
+if [ $ret != 0 ]; then echo_i "failed"; fi
|
|
 |
5d1446 |
+status=`expr $status + $ret`
|
|
 |
5d1446 |
+
|
|
 |
5d1446 |
echo_i "exit status: $status"
|
|
 |
5d1446 |
[ $status -eq 0 ] || exit 1
|
|
 |
5d1446 |
diff --git a/lib/dns/zone.c b/lib/dns/zone.c
|
|
 |
5d1446 |
index 96c98d5..42a1811 100644
|
|
 |
5d1446 |
--- a/lib/dns/zone.c
|
|
 |
5d1446 |
+++ b/lib/dns/zone.c
|
|
 |
5d1446 |
@@ -3611,6 +3611,8 @@ set_resigntime(dns_zone_t *zone) {
|
|
 |
5d1446 |
isc_uint32_t nanosecs;
|
|
 |
5d1446 |
dns_db_t *db = NULL;
|
|
 |
5d1446 |
|
|
 |
5d1446 |
+ INSIST(LOCKED_ZONE(zone));
|
|
 |
5d1446 |
+
|
|
 |
5d1446 |
/* We only re-sign zones that can be dynamically updated */
|
|
 |
5d1446 |
if (zone->update_disabled)
|
|
 |
5d1446 |
return;
|
|
 |
5d1446 |
@@ -4958,6 +4960,14 @@ zone_postload(dns_zone_t *zone, dns_db_t *db, isc_time_t loadtime,
|
|
 |
5d1446 |
DNS_ZONE_FLAG(zone->secure, DNS_ZONEFLG_LOADED))
|
|
 |
5d1446 |
{
|
|
 |
5d1446 |
DNS_ZONE_CLRFLAG(zone->secure, DNS_ZONEFLG_LOADPENDING);
|
|
 |
5d1446 |
+ /*
|
|
 |
5d1446 |
+ * Re-start zone maintenance if it had been stalled
|
|
 |
5d1446 |
+ * due to DNS_ZONEFLG_LOADPENDING being set when
|
|
 |
5d1446 |
+ * zone_maintenance was called.
|
|
 |
5d1446 |
+ */
|
|
 |
5d1446 |
+ if (zone->secure->task != NULL) {
|
|
 |
5d1446 |
+ zone_settimer(zone->secure, &now;;
|
|
 |
5d1446 |
+ }
|
|
 |
5d1446 |
}
|
|
 |
5d1446 |
|
|
 |
5d1446 |
return (result);
|
|
 |
5d1446 |
@@ -6672,14 +6682,15 @@ zone_resigninc(dns_zone_t *zone) {
|
|
 |
5d1446 |
if (version != NULL) {
|
|
 |
5d1446 |
dns_db_closeversion(db, &version, ISC_FALSE);
|
|
 |
5d1446 |
dns_db_detach(&db);
|
|
 |
5d1446 |
- } else if (db != NULL)
|
|
 |
5d1446 |
+ } else if (db != NULL) {
|
|
 |
5d1446 |
dns_db_detach(&db);
|
|
 |
5d1446 |
+ }
|
|
 |
5d1446 |
+
|
|
 |
5d1446 |
+ LOCK_ZONE(zone);
|
|
 |
5d1446 |
if (result == ISC_R_SUCCESS) {
|
|
 |
5d1446 |
set_resigntime(zone);
|
|
 |
5d1446 |
- LOCK_ZONE(zone);
|
|
 |
5d1446 |
zone_needdump(zone, DNS_DUMP_DELAY);
|
|
 |
5d1446 |
DNS_ZONE_SETFLAG(zone, DNS_ZONEFLG_NEEDNOTIFY);
|
|
 |
5d1446 |
- UNLOCK_ZONE(zone);
|
|
 |
5d1446 |
} else {
|
|
 |
5d1446 |
/*
|
|
 |
5d1446 |
* Something failed. Retry in 5 minutes.
|
|
 |
5d1446 |
@@ -6688,6 +6699,7 @@ zone_resigninc(dns_zone_t *zone) {
|
|
 |
5d1446 |
isc_interval_set(&ival, 300, 0);
|
|
 |
5d1446 |
isc_time_nowplusinterval(&zone->resigntime, &ival);
|
|
 |
5d1446 |
}
|
|
 |
5d1446 |
+ UNLOCK_ZONE(zone);
|
|
 |
5d1446 |
|
|
 |
5d1446 |
INSIST(version == NULL);
|
|
 |
5d1446 |
}
|
|
 |
5d1446 |
@@ -8177,7 +8189,9 @@ zone_nsec3chain(dns_zone_t *zone) {
|
|
 |
5d1446 |
nsec3chain = ISC_LIST_HEAD(cleanup);
|
|
 |
5d1446 |
}
|
|
 |
5d1446 |
|
|
 |
5d1446 |
+ LOCK_ZONE(zone);
|
|
 |
5d1446 |
set_resigntime(zone);
|
|
 |
5d1446 |
+ UNLOCK_ZONE(zone);
|
|
 |
5d1446 |
|
|
 |
5d1446 |
failure:
|
|
 |
5d1446 |
if (result != ISC_R_SUCCESS)
|
|
 |
5d1446 |
@@ -8841,14 +8855,14 @@ zone_sign(dns_zone_t *zone) {
|
|
 |
5d1446 |
signing = ISC_LIST_HEAD(cleanup);
|
|
 |
5d1446 |
}
|
|
 |
5d1446 |
|
|
 |
5d1446 |
+ LOCK_ZONE(zone);
|
|
 |
5d1446 |
set_resigntime(zone);
|
|
 |
5d1446 |
|
|
 |
5d1446 |
if (commit) {
|
|
 |
5d1446 |
- LOCK_ZONE(zone);
|
|
 |
5d1446 |
DNS_ZONE_SETFLAG(zone, DNS_ZONEFLG_NEEDNOTIFY);
|
|
 |
5d1446 |
zone_needdump(zone, DNS_DUMP_DELAY);
|
|
 |
5d1446 |
- UNLOCK_ZONE(zone);
|
|
 |
5d1446 |
}
|
|
 |
5d1446 |
+ UNLOCK_ZONE(zone);
|
|
 |
5d1446 |
|
|
 |
5d1446 |
failure:
|
|
 |
5d1446 |
/*
|
|
 |
5d1446 |
@@ -8885,6 +8899,7 @@ zone_sign(dns_zone_t *zone) {
|
|
 |
5d1446 |
} else if (db != NULL)
|
|
 |
5d1446 |
dns_db_detach(&db);
|
|
 |
5d1446 |
|
|
 |
5d1446 |
+ LOCK_ZONE(zone);
|
|
 |
5d1446 |
if (ISC_LIST_HEAD(zone->signing) != NULL) {
|
|
 |
5d1446 |
isc_interval_t interval;
|
|
 |
5d1446 |
if (zone->update_disabled || result != ISC_R_SUCCESS)
|
|
 |
5d1446 |
@@ -8892,8 +8907,10 @@ zone_sign(dns_zone_t *zone) {
|
|
 |
5d1446 |
else
|
|
 |
5d1446 |
isc_interval_set(&interval, 0, 10000000); /* 10 ms */
|
|
 |
5d1446 |
isc_time_nowplusinterval(&zone->signingtime, &interval);
|
|
 |
5d1446 |
- } else
|
|
 |
5d1446 |
+ } else {
|
|
 |
5d1446 |
isc_time_settoepoch(&zone->signingtime);
|
|
 |
5d1446 |
+ }
|
|
 |
5d1446 |
+ UNLOCK_ZONE(zone);
|
|
 |
5d1446 |
|
|
 |
5d1446 |
INSIST(version == NULL);
|
|
 |
5d1446 |
}
|
|
 |
5d1446 |
@@ -9983,7 +10000,7 @@ zone_maintenance(dns_zone_t *zone) {
|
|
 |
5d1446 |
const char me[] = "zone_maintenance";
|
|
 |
5d1446 |
isc_time_t now;
|
|
 |
5d1446 |
isc_result_t result;
|
|
 |
5d1446 |
- isc_boolean_t dumping;
|
|
 |
5d1446 |
+ isc_boolean_t dumping, viewok;
|
|
 |
5d1446 |
|
|
 |
5d1446 |
REQUIRE(DNS_ZONE_VALID(zone));
|
|
 |
5d1446 |
ENTER;
|
|
 |
5d1446 |
@@ -10001,8 +10018,12 @@ zone_maintenance(dns_zone_t *zone) {
|
|
 |
5d1446 |
* adb or resolver will be NULL, and we had better not try
|
|
 |
5d1446 |
* to do further maintenance on it.
|
|
 |
5d1446 |
*/
|
|
 |
5d1446 |
- if (zone->view == NULL || zone->view->adb == NULL)
|
|
 |
5d1446 |
+ LOCK_ZONE(zone);
|
|
 |
5d1446 |
+ viewok = (zone->view != NULL && zone->view->adb != NULL);
|
|
 |
5d1446 |
+ UNLOCK_ZONE(zone);
|
|
 |
5d1446 |
+ if (!viewok) {
|
|
 |
5d1446 |
return;
|
|
 |
5d1446 |
+ }
|
|
 |
5d1446 |
|
|
 |
5d1446 |
TIME_NOW(&now;;
|
|
 |
5d1446 |
|
|
 |
5d1446 |
@@ -10195,8 +10216,14 @@ dns_zone_markdirty(dns_zone_t *zone) {
|
|
 |
5d1446 |
}
|
|
 |
5d1446 |
|
|
 |
5d1446 |
/* XXXMPA make separate call back */
|
|
 |
5d1446 |
- if (result == ISC_R_SUCCESS)
|
|
 |
5d1446 |
+ if (result == ISC_R_SUCCESS) {
|
|
 |
5d1446 |
set_resigntime(zone);
|
|
 |
5d1446 |
+ if (zone->task != NULL) {
|
|
 |
5d1446 |
+ isc_time_t now;
|
|
 |
5d1446 |
+ TIME_NOW(&now;;
|
|
 |
5d1446 |
+ zone_settimer(zone, &now;;
|
|
 |
5d1446 |
+ }
|
|
 |
5d1446 |
+ }
|
|
 |
5d1446 |
}
|
|
 |
5d1446 |
if (secure != NULL)
|
|
 |
5d1446 |
UNLOCK_ZONE(secure);
|
|
 |
5d1446 |
@@ -14418,6 +14445,11 @@ receive_secure_serial(isc_task_t *task, isc_event_t *event) {
|
|
 |
5d1446 |
zone->sourceserialset = ISC_TRUE;
|
|
 |
5d1446 |
zone_needdump(zone, DNS_DUMP_DELAY);
|
|
 |
5d1446 |
|
|
 |
5d1446 |
+ /*
|
|
 |
5d1446 |
+ * Set resign time to make sure it is set to the earliest
|
|
 |
5d1446 |
+ * signature expiration.
|
|
 |
5d1446 |
+ */
|
|
 |
5d1446 |
+ set_resigntime(zone);
|
|
 |
5d1446 |
TIME_NOW(&timenow);
|
|
 |
5d1446 |
zone_settimer(zone, &timenow);
|
|
 |
5d1446 |
UNLOCK_ZONE(zone);
|
|
 |
5d1446 |
@@ -14436,9 +14468,15 @@ receive_secure_serial(isc_task_t *task, isc_event_t *event) {
|
|
 |
5d1446 |
|
|
 |
5d1446 |
if (zone->rss_raw != NULL)
|
|
 |
5d1446 |
dns_zone_detach(&zone->rss_raw);
|
|
 |
5d1446 |
- if (result != ISC_R_SUCCESS)
|
|
 |
5d1446 |
+ if (result != ISC_R_SUCCESS) {
|
|
 |
5d1446 |
+ LOCK_ZONE(zone);
|
|
 |
5d1446 |
+ set_resigntime(zone);
|
|
 |
5d1446 |
+ TIME_NOW(&timenow);
|
|
 |
5d1446 |
+ zone_settimer(zone, &timenow);
|
|
 |
5d1446 |
+ UNLOCK_ZONE(zone);
|
|
 |
5d1446 |
dns_zone_log(zone, ISC_LOG_ERROR, "receive_secure_serial: %s",
|
|
 |
5d1446 |
dns_result_totext(result));
|
|
 |
5d1446 |
+ }
|
|
 |
5d1446 |
if (tuple != NULL)
|
|
 |
5d1446 |
dns_difftuple_free(&tuple);
|
|
 |
5d1446 |
if (soatuple != NULL)
|
|
 |
5d1446 |
@@ -18096,10 +18134,11 @@ zone_rekey(dns_zone_t *zone) {
|
|
 |
5d1446 |
|
|
 |
5d1446 |
dns_db_closeversion(db, &ver, ISC_TRUE);
|
|
 |
5d1446 |
|
|
 |
5d1446 |
+ LOCK_ZONE(zone);
|
|
 |
5d1446 |
+
|
|
 |
5d1446 |
if (commit) {
|
|
 |
5d1446 |
dns_difftuple_t *tuple;
|
|
 |
5d1446 |
|
|
 |
5d1446 |
- LOCK_ZONE(zone);
|
|
 |
5d1446 |
DNS_ZONE_SETFLAG(zone, DNS_ZONEFLG_NEEDNOTIFY);
|
|
 |
5d1446 |
|
|
 |
5d1446 |
zone_needdump(zone, DNS_DUMP_DELAY);
|
|
 |
5d1446 |
@@ -18217,7 +18256,6 @@ zone_rekey(dns_zone_t *zone) {
|
|
 |
5d1446 |
* Schedule the next resigning event
|
|
 |
5d1446 |
*/
|
|
 |
5d1446 |
set_resigntime(zone);
|
|
 |
5d1446 |
- UNLOCK_ZONE(zone);
|
|
 |
5d1446 |
}
|
|
 |
5d1446 |
|
|
 |
5d1446 |
isc_time_settoepoch(&zone->refreshkeytime);
|
|
 |
5d1446 |
@@ -18231,11 +18269,9 @@ zone_rekey(dns_zone_t *zone) {
|
|
 |
5d1446 |
isc_time_t timethen;
|
|
 |
5d1446 |
isc_stdtime_t then;
|
|
 |
5d1446 |
|
|
 |
5d1446 |
- LOCK_ZONE(zone);
|
|
 |
5d1446 |
DNS_ZONE_TIME_ADD(&timenow, zone->refreshkeyinterval,
|
|
 |
5d1446 |
&timethen);
|
|
 |
5d1446 |
zone->refreshkeytime = timethen;
|
|
 |
5d1446 |
- UNLOCK_ZONE(zone);
|
|
 |
5d1446 |
|
|
 |
5d1446 |
for (key = ISC_LIST_HEAD(dnskeys);
|
|
 |
5d1446 |
key != NULL;
|
|
 |
5d1446 |
@@ -18246,12 +18282,10 @@ zone_rekey(dns_zone_t *zone) {
|
|
 |
5d1446 |
continue;
|
|
 |
5d1446 |
|
|
 |
5d1446 |
DNS_ZONE_TIME_ADD(&timenow, then - now, &timethen);
|
|
 |
5d1446 |
- LOCK_ZONE(zone);
|
|
 |
5d1446 |
if (isc_time_compare(&timethen,
|
|
 |
5d1446 |
&zone->refreshkeytime) < 0) {
|
|
 |
5d1446 |
zone->refreshkeytime = timethen;
|
|
 |
5d1446 |
}
|
|
 |
5d1446 |
- UNLOCK_ZONE(zone);
|
|
 |
5d1446 |
}
|
|
 |
5d1446 |
|
|
 |
5d1446 |
zone_settimer(zone, &timenow);
|
|
 |
5d1446 |
@@ -18259,6 +18293,7 @@ zone_rekey(dns_zone_t *zone) {
|
|
 |
5d1446 |
isc_time_formattimestamp(&zone->refreshkeytime, timebuf, 80);
|
|
 |
5d1446 |
dns_zone_log(zone, ISC_LOG_INFO, "next key event: %s", timebuf);
|
|
 |
5d1446 |
}
|
|
 |
5d1446 |
+ UNLOCK_ZONE(zone);
|
|
 |
5d1446 |
|
|
 |
5d1446 |
done:
|
|
 |
5d1446 |
dns_diff_clear(&diff);
|
|
 |
5d1446 |
@@ -18293,8 +18328,10 @@ zone_rekey(dns_zone_t *zone) {
|
|
 |
5d1446 |
* Something went wrong; try again in ten minutes or
|
|
 |
5d1446 |
* after a key refresh interval, whichever is shorter.
|
|
 |
5d1446 |
*/
|
|
 |
5d1446 |
+ LOCK_ZONE(zone);
|
|
 |
5d1446 |
isc_interval_set(&ival, ISC_MIN(zone->refreshkeyinterval, 600), 0);
|
|
 |
5d1446 |
isc_time_nowplusinterval(&zone->refreshkeytime, &ival);
|
|
 |
5d1446 |
+ UNLOCK_ZONE(zone);
|
|
 |
5d1446 |
goto done;
|
|
 |
5d1446 |
}
|
|
 |
5d1446 |
|