return (ISC_R_SUCCESS);
}
+ RWLOCK(&rpz->rpzs->search_lock, isc_rwlocktype_write);
result = search(rpz->rpzs, &tgt_ip, tgt_prefix, &set, true, &found);
if (result != ISC_R_SUCCESS) {
char namebuf[DNS_NAME_FORMATSIZE];
* because diff_apply() likes to add nodes before deleting.
*/
if (result == ISC_R_EXISTS) {
- return (ISC_R_SUCCESS);
+ result = ISC_R_SUCCESS;
+ goto done;
}
/*
DNS_LOGMODULE_RBTDB, DNS_RPZ_ERROR_LEVEL,
"rpz add_cidr(%s) failed: %s", namebuf,
isc_result_totext(result));
- return (result);
+ goto done;
}
adj_trigger_cnt(rpz, rpz_type, &tgt_ip, tgt_prefix, true);
+done:
+ RWUNLOCK(&rpz->rpzs->search_lock, isc_rwlocktype_write);
return (result);
}
return (ISC_R_SUCCESS);
}
if (result == ISC_R_SUCCESS) {
+ RWLOCK(&rpz->rpzs->search_lock, isc_rwlocktype_write);
adj_trigger_cnt(rpz, rpz_type, NULL, 0, true);
+ RWUNLOCK(&rpz->rpzs->search_lock, isc_rwlocktype_write);
}
return (result);
}
REQUIRE(rpzs != NULL && rpz_num < rpzs->p.num_zones);
- RWLOCK(&rpzs->search_lock, isc_rwlocktype_write);
-
rpz_type = type_from_name(rpzs, rpz, src_name);
-
switch (rpz_type) {
case DNS_RPZ_TYPE_QNAME:
case DNS_RPZ_TYPE_NSDNAME:
case DNS_RPZ_TYPE_BAD:
break;
}
- RWUNLOCK(&rpzs->search_lock, isc_rwlocktype_write);
return (result);
}
return;
}
+ RWLOCK(&rpz->rpzs->search_lock, isc_rwlocktype_write);
result = search(rpz->rpzs, &tgt_ip, tgt_prefix, &tgt_set, false, &tgt);
if (result != ISC_R_SUCCESS) {
- return;
+ goto done;
}
/*
tgt = parent;
} while (tgt != NULL);
+
+done:
+ RWUNLOCK(&rpz->rpzs->search_lock, isc_rwlocktype_write);
}
static void
}
if (exists) {
+ RWLOCK(&rpz->rpzs->search_lock, isc_rwlocktype_write);
adj_trigger_cnt(rpz, rpz_type, NULL, 0, false);
+ RWUNLOCK(&rpz->rpzs->search_lock, isc_rwlocktype_write);
}
dns_qp_compact(qp, DNS_QPGC_MAYBE);
REQUIRE(rpzs != NULL && rpz_num < rpzs->p.num_zones);
- RWLOCK(&rpzs->search_lock, isc_rwlocktype_write);
-
rpz_type = type_from_name(rpzs, rpz, src_name);
-
switch (rpz_type) {
case DNS_RPZ_TYPE_QNAME:
case DNS_RPZ_TYPE_NSDNAME:
case DNS_RPZ_TYPE_BAD:
break;
}
-
- RWUNLOCK(&rpzs->search_lock, isc_rwlocktype_write);
}
/*
return (0);
}
- RWLOCK(&rpzs->search_lock, isc_rwlocktype_read);
-
dns_qpmulti_query(rpzs->table, &qpr);
dns_qpchain_init(&qpr, &chain);
break;
}
- RWUNLOCK(&rpzs->search_lock, isc_rwlocktype_read);
dns_qpread_destroy(rpzs->table, &qpr);
return (zbits & found_zbits);
}