summaryrefslogtreecommitdiff
path: root/source4/dns_server
diff options
context:
space:
mode:
authorGarming Sam <garming@catalyst.net.nz>2017-06-19 15:01:56 +1200
committerAndrew Bartlett <abartlet@samba.org>2017-06-22 13:06:07 +0200
commit73a7d154a862340f64cdd98475d5d91c8b6018ec (patch)
treea35835fda8cdb0bd611004a9ca4eb629d7d47f56 /source4/dns_server
parent0431dc5ce92cf34dba07f15eec2f6c02b696a8db (diff)
downloadsamba-73a7d154a862340f64cdd98475d5d91c8b6018ec.tar.gz
dnsserver/common: Use cached dnsHostName to reduce database reads
The code to clobber the host name appears to have caused DNS requests to use 3x as much resources Signed-off-by: Garming Sam <garming@catalyst.net.nz> Reviewed-by: Andrew Bartlett <abartlet@samba.org> Autobuild-User(master): Andrew Bartlett <abartlet@samba.org> Autobuild-Date(master): Thu Jun 22 13:06:07 CEST 2017 on sn-devel-144
Diffstat (limited to 'source4/dns_server')
-rw-r--r--source4/dns_server/dnsserver_common.c24
1 files changed, 4 insertions, 20 deletions
diff --git a/source4/dns_server/dnsserver_common.c b/source4/dns_server/dnsserver_common.c
index d0c0a2fdbb4..a56ff08031b 100644
--- a/source4/dns_server/dnsserver_common.c
+++ b/source4/dns_server/dnsserver_common.c
@@ -89,11 +89,9 @@ WERROR dns_common_extract(struct ldb_context *samdb,
for (ri = 0; ri < el->num_values; ri++) {
bool am_rodc;
int ret;
- const char *attrs[] = { "dnsHostName", NULL };
- const char *dnsHostName;
+ const char *dnsHostName = NULL;
struct ldb_val *v = &el->values[ri];
enum ndr_err_code ndr_err;
- struct ldb_result *res = NULL;
ndr_err = ndr_pull_struct_blob(v, recs, &recs[ri],
(ndr_pull_flags_fn_t)ndr_pull_dnsp_DnssrvRpcRecord);
if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
@@ -121,27 +119,13 @@ WERROR dns_common_extract(struct ldb_context *samdb,
continue;
}
- ret = dsdb_search_dn(samdb, mem_ctx, &res, NULL,
- attrs, 0);
-
- if (res->count != 1 || ret != LDB_SUCCESS) {
- DEBUG(0, ("Failed to get rootDSE for dnsHostName: %s",
- ldb_errstring(samdb)));
- return DNS_ERR(SERVER_FAILURE);
- }
-
- dnsHostName
- = ldb_msg_find_attr_as_string(res->msgs[0],
- "dnsHostName",
- NULL);
-
- if (dnsHostName == NULL) {
+ ret = samdb_dns_host_name(samdb, &dnsHostName);
+ if (ret != LDB_SUCCESS || dnsHostName == NULL) {
DEBUG(0, ("Failed to get dnsHostName from rootDSE"));
return DNS_ERR(SERVER_FAILURE);
}
- recs[ri].data.soa.mname
- = talloc_steal(recs, dnsHostName);
+ recs[ri].data.soa.mname = talloc_strdup(recs, dnsHostName);
}
*records = recs;