900526
diff --git a/lib/dns/resolver.c b/lib/dns/resolver.c
900526
index 8696b15..5ef2dd6 100644
900526
--- a/lib/dns/resolver.c
900526
+++ b/lib/dns/resolver.c
900526
@@ -7373,9 +7373,12 @@ resquery_response(isc_task_t *task, isc_event_t *event) {
900526
 		 * NXDOMAIN, NXRDATASET, or referral.
900526
 		 */
900526
 		result = noanswer_response(fctx, NULL, 0);
900526
-		if (result == DNS_R_CHASEDSSERVERS) {
900526
-		} else if (result == DNS_R_DELEGATION) {
900526
-		force_referral:
900526
+		switch (result) {
900526
+		case ISC_R_SUCCESS:
900526
+		case DNS_R_CHASEDSSERVERS:
900526
+			break;
900526
+		case DNS_R_DELEGATION:
900526
+ force_referral:
900526
 			/*
900526
 			 * We don't have the answer, but we know a better
900526
 			 * place to look.
900526
@@ -7400,7 +7403,8 @@ resquery_response(isc_task_t *task, isc_event_t *event) {
900526
 			fctx->adberr = 0;
900526
 
900526
 			result = ISC_R_SUCCESS;
900526
-		} else if (result != ISC_R_SUCCESS) {
900526
+			break;
900526
+		default:
900526
 			/*
900526
 			 * Something has gone wrong.
900526
 			 */
900526
diff --git a/lib/dns/view.c b/lib/dns/view.c
900526
index 142b09e..35900b3 100644
900526
--- a/lib/dns/view.c
900526
+++ b/lib/dns/view.c
900526
@@ -1216,6 +1216,7 @@ dns_view_findzonecut2(dns_view_t *view, dns_name_t *name, dns_name_t *fname,
900526
 	dns_name_t *zfname;
900526
 	dns_rdataset_t zrdataset, zsigrdataset;
900526
 	dns_fixedname_t zfixedname;
900526
+	unsigned int ztoptions = 0;
900526
 
900526
 #ifndef BIND9
900526
 	UNUSED(zone);
900526
@@ -1242,9 +1243,12 @@ dns_view_findzonecut2(dns_view_t *view, dns_name_t *name, dns_name_t *fname,
900526
 #ifdef BIND9
900526
 	zone = NULL;
900526
 	LOCK(&view->lock);
900526
-	if (view->zonetable != NULL)
900526
-		result = dns_zt_find(view->zonetable, name, 0, NULL, &zone);
900526
-	else
900526
+	if (view->zonetable != NULL) {
900526
+		if ((options & DNS_DBFIND_NOEXACT) != 0)
900526
+			ztoptions |= DNS_ZTFIND_NOEXACT;
900526
+		result = dns_zt_find(view->zonetable, name, ztoptions,
900526
+				     NULL, &zone);
900526
+	} else
900526
 		result = ISC_R_NOTFOUND;
900526
 	if (result == ISC_R_SUCCESS || result == DNS_R_PARTIALMATCH)
900526
 		result = dns_zone_getdb(zone, &db);