From 5ff9fb2299dd787488113bef8305649c4aea2885 Mon Sep 17 00:00:00 2001 From: Mark Andrews Date: Sun, 27 Mar 2016 08:25:44 +1100 Subject: [PATCH] attempt to create a node at the flushtree name (cherry picked from commit dd185fb371632b9cf1b7be3097960185c9645a09) --- lib/dns/cache.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/lib/dns/cache.c b/lib/dns/cache.c index 6dedc2cd0c..c233873e6c 100644 --- a/lib/dns/cache.c +++ b/lib/dns/cache.c @@ -1214,10 +1214,16 @@ static isc_result_t cleartree(dns_db_t *db, dns_name_t *name) { isc_result_t result, answer = ISC_R_SUCCESS; dns_dbiterator_t *iter = NULL; - dns_dbnode_t *node = NULL; + dns_dbnode_t *node = NULL, *top = NULL; dns_fixedname_t fnodename; dns_name_t *nodename; + /* + * Create the node if it doesn't exist so dns_dbiterator_seek() + * can find it. We will continue even if this fails. + */ + (void)dns_db_findnode(db, name, ISC_TRUE, &top); + dns_fixedname_init(&fnodename); nodename = dns_fixedname_name(&fnodename); @@ -1262,6 +1268,8 @@ cleartree(dns_db_t *db, dns_name_t *name) { dns_db_detachnode(db, &node); if (iter != NULL) dns_dbiterator_destroy(&iter); + if (top != NULL) + dns_db_detachnode(db, &top); return (answer); }