From d346e2ee6b154a0dcf4072a3fc1fd6007369a69d Mon Sep 17 00:00:00 2001 From: Andrew Bartlett Date: Mon, 28 May 2018 10:56:21 +1200 Subject: [PATCH] dsdb: Remove sort from subtree_delete and add comments. The sort was written back when the module did not operate recursivly over the tree. Now it is just confusing, so replace with useful comments. Signed-off-by: Andrew Bartlett Reviewed-by: Stefan Metzmacher Reviewed-by: Garming Sam --- .../dsdb/samdb/ldb_modules/subtree_delete.c | 25 +++++-------------- 1 file changed, 6 insertions(+), 19 deletions(-) diff --git a/source4/dsdb/samdb/ldb_modules/subtree_delete.c b/source4/dsdb/samdb/ldb_modules/subtree_delete.c index b1f87f77b54..24211b61ab3 100644 --- a/source4/dsdb/samdb/ldb_modules/subtree_delete.c +++ b/source4/dsdb/samdb/ldb_modules/subtree_delete.c @@ -38,19 +38,6 @@ #include "dsdb/common/util.h" -static int subtree_delete_sort(struct ldb_message **m1, - struct ldb_message **m2, - void *private_data) -{ - struct ldb_dn *dn1 = (*m1)->dn; - struct ldb_dn *dn2 = (*m2)->dn; - - /* - * This sorts in tree order, children first - */ - return ldb_dn_compare(dn1, dn2); -} - static int subtree_delete(struct ldb_module *module, struct ldb_request *req) { static const char * const attrs[] = { NULL }; @@ -92,12 +79,6 @@ static int subtree_delete(struct ldb_module *module, struct ldb_request *req) return LDB_ERR_NOT_ALLOWED_ON_NON_LEAF; } - /* - * First we sort the results from the leaf to the root - */ - LDB_TYPESAFE_QSORT(res->msgs, res->count, NULL, - subtree_delete_sort); - /* * we need to start from the top since other LDB modules could * enforce constraints (eg "objectclass" and "samldb" do so). @@ -113,6 +94,12 @@ static int subtree_delete(struct ldb_module *module, struct ldb_request *req) flags |= DSDB_MODIFY_RELAX; } + /* + * The net result of this code is that the leaf nodes are + * deleted first, as the parent is only deleted once these + * calls (and the delete calls recursive within these) + * complete. + */ for (i = 0; i < res->count; i++) { ret = dsdb_module_del(module, res->msgs[i]->dn, flags, req); if (ret != LDB_SUCCESS) { -- 2.34.1