TMP s4 dns play with ldb transactions for dns updates
authorKai Blin <kai@samba.org>
Tue, 12 Oct 2010 20:41:35 +0000 (22:41 +0200)
committerKai Blin <kai@samba.org>
Tue, 27 Sep 2011 23:10:02 +0000 (16:10 -0700)
source4/dns_server/dns_update.c

index fd332777a46e408ed7f8abe9e4f0564a174b08da..1e89cd93bf344cdf65348b9b21f3f0b5e0d6960c 100644 (file)
@@ -142,29 +142,16 @@ static WERROR handle_update(struct dns_server *dns,
        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);
@@ -279,8 +266,11 @@ static WERROR handle_update(struct dns_server *dns,
        *ancount = ai;
        *answers = ans;
 #endif
+       werror = DNS_ERR(NOT_IMPLEMENTED);
 
-       return WERR_OK;
+failed:
+       ldb_transaction_cancel(dns->samdb);
+       return werror;
 
 }