werror = dns_name2dn(dns, mem_ctx, zone->name, &zone_dn);
W_ERROR_NOT_OK_RETURN(werror);
- ret = dsdb_search_one(dns->samdb, mem_ctx, &msg, zone_dn,
- LDB_SCOPE_BASE, attrs, 0, "%s", "(objectClass=dnsNode)");
+ ret = ldb_transaction_start(dns->samdb);
if (ret != LDB_SUCCESS) {
- return DNS_ERR(NAME_ERROR);
+ return DNS_ERR(SERVER_FAILURE);
}
- el = ldb_msg_find_element(msg, attrs[0]);
- if (el == NULL) {
- return DNS_ERR(NAME_ERROR);
+ for (ri = 0; ri < ai; ri++) {
+ DEBUG(0, ("Looking at record: \n"));
+ NDR_PRINT_DEBUG(dns_res_rec, updates[ri]);
}
- recs = talloc_array(mem_ctx, struct dnsp_DnssrvRpcRecord, el->num_values);
- for (ri = 0; ri < el->num_values; ri++) {
- struct ldb_val *v = &el->values[ri];
- enum ndr_err_code ndr_err;
-
- 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)) {
- DEBUG(0, ("Failed to grab dnsp_DnssrvRpcRecord\n"));
- return DNS_ERR(SERVER_FAILURE);
- }
- }
#if 0
ans = talloc_realloc(mem_ctx, *answers, struct dns_res_rec,
ai + el->num_values);
*ancount = ai;
*answers = ans;
#endif
+ werror = DNS_ERR(NOT_IMPLEMENTED);
- return WERR_OK;
+failed:
+ ldb_transaction_cancel(dns->samdb);
+ return werror;
}