bla
authorStefan Metzmacher <metze@samba.org>
Fri, 16 Nov 2012 17:52:24 +0000 (18:52 +0100)
committerStefan Metzmacher <metze@samba.org>
Mon, 19 Nov 2012 11:02:06 +0000 (12:02 +0100)
source4/dsdb/samdb/ldb_modules/repl_meta_data.c

index 1f3a8d84574ac6f4c68368a515ed05f27a40e60c..0a5dc6738c4fe79132a0ff8a5e235a78e62fff80 100644 (file)
@@ -68,8 +68,11 @@ struct replmd_private {
                uint64_t mod_usn_urgent;
        } *ncs;
 
-       uint32_t num_sd_updates;
-       struct ldb_dn *sd_updates;
+       TALLOC_CTX *sd_updates_mem_ctx;
+       struct sd_update {
+               struct sd_update *prev, *next;
+               struct ldb_dn *dn;
+       } *sd_updates;
 };
 
 struct la_entry {
@@ -190,9 +193,9 @@ static void replmd_txn_cleanup(struct replmd_private *replmd_private)
        replmd_private->la_backlinks = NULL;
        replmd_private->bl_ctx = NULL;
 
-       talloc_free(replmd_private->sd_updates);
+       talloc_free(replmd_private->sd_updates_mem_ctx);
+       replmd_private->sd_updates_mem_ctx = NULL;
        replmd_private->sd_updates = NULL;
-       replmd_private->num_sd_updates = 0;
 }
 
 
@@ -3989,7 +3992,10 @@ static int replmd_replicated_handle_rename(struct replmd_replicated_request *ar,
 
 static int replmd_replicated_apply_merge(struct replmd_replicated_request *ar)
 {
-       struct ldb_context *ldb;
+       struct replmd_private *replmd_private =
+               talloc_get_type_abort(ldb_module_get_private(ar->module),
+               struct replmd_private);
+       struct ldb_context *ldb = ldb_module_get_ctx(ar->module);
        struct ldb_request *change_req;
        enum ndr_err_code ndr_err;
        struct ldb_message *msg;
@@ -4003,11 +4009,8 @@ static int replmd_replicated_apply_merge(struct replmd_replicated_request *ar)
        unsigned int removed_attrs = 0;
        int ret;
        int (*callback)(struct ldb_request *req, struct ldb_reply *ares) = replmd_op_callback;
-       struct replmd_private *replmd_private = talloc_get_type(ldb_module_get_private(module),
-                                                               struct replmd_private);
        bool sd_updated = false;
 
-       ldb = ldb_module_get_ctx(ar->module);
        msg = ar->objs->objects[ar->index_current].msg;
 
        rmd = ar->objs->objects[ar->index_current].meta_data;
@@ -4196,6 +4199,15 @@ static int replmd_replicated_apply_merge(struct replmd_replicated_request *ar)
                  ar->index_current, msg->num_elements);
 
        if (sd_updated) {
+               struct sd_update *up;
+
+               up = talloc_zero(replmd_private->sd_updates_mem_ctx,
+                                struct sd_update);
+               if (up == NULL) {
+
+               }
+               up->dn = msg->dn;
+               DLIST_ADD_END(eplmd_private->sd_updates, up);
                //ret = replmd_add_
                //replmd_private;
                //BINARY_ARRAY_SEARCH
@@ -5213,6 +5225,7 @@ static int replmd_prepare_commit(struct ldb_module *module)
                talloc_get_type(ldb_module_get_private(module), struct replmd_private);
        struct la_entry *la, *prev;
        struct la_backlink *bl;
+       struct sd_update *up;
        int ret;
 
        /* walk the list backwards, to do the first entry first, as we
@@ -5238,6 +5251,10 @@ static int replmd_prepare_commit(struct ldb_module *module)
                }
        }
 
+       for (up=replmd_private->sd_updates; up; up = up->next) {
+
+       }
+
        replmd_txn_cleanup(replmd_private);
 
        /* possibly change @REPLCHANGED */