summaryrefslogtreecommitdiff
path: root/source4/dsdb/samdb
diff options
context:
space:
mode:
authorAndrew Tridgell <tridge@samba.org>2009-12-16 20:45:02 +1100
committerAndrew Tridgell <tridge@samba.org>2009-12-16 20:56:24 +1100
commit558a38671af5ea05d9ee1d815f0c1c2dab41a80c (patch)
tree19752f35e1b1868425157accb0a96456ad6bcbb3 /source4/dsdb/samdb
parent41e403adb0fa76c8d15d5d1ef38b195a6da2265c (diff)
downloadsamba-558a38671af5ea05d9ee1d815f0c1c2dab41a80c.tar.gz
samba-558a38671af5ea05d9ee1d815f0c1c2dab41a80c.tar.bz2
samba-558a38671af5ea05d9ee1d815f0c1c2dab41a80c.zip
s4-dsdb: it is a better pattern to mark a control as done than remove it
removing a control means it can't be seen by any other modules, which is usually not what is wanted. Better to just mark it non-critical, which means anyone else who wants to look at it can, but if nobody does its not an error.
Diffstat (limited to 'source4/dsdb/samdb')
-rw-r--r--source4/dsdb/samdb/ldb_modules/extended_dn_out.c18
-rw-r--r--source4/dsdb/samdb/ldb_modules/lazy_commit.c3
-rw-r--r--source4/dsdb/samdb/ldb_modules/show_deleted.c7
3 files changed, 7 insertions, 21 deletions
diff --git a/source4/dsdb/samdb/ldb_modules/extended_dn_out.c b/source4/dsdb/samdb/ldb_modules/extended_dn_out.c
index bd57913ea6..2d0ee6a4aa 100644
--- a/source4/dsdb/samdb/ldb_modules/extended_dn_out.c
+++ b/source4/dsdb/samdb/ldb_modules/extended_dn_out.c
@@ -553,7 +553,6 @@ static int extended_dn_out_search(struct ldb_module *module, struct ldb_request
struct ldb_control *control;
struct ldb_control *storage_format_control;
struct ldb_extended_dn_control *extended_ctrl = NULL;
- struct ldb_control **saved_controls;
struct extended_search_context *ac;
struct ldb_request *down_req;
char **new_attrs;
@@ -652,24 +651,13 @@ static int extended_dn_out_search(struct ldb_module *module, struct ldb_request
return ret;
}
- /* Remove extended DN and storage format controls */
-
+ /* mark extended DN and storage format controls as done */
if (control) {
- /* save it locally and remove it from the list */
- /* we do not need to replace them later as we
- * are keeping the original req intact */
- if (!save_controls(control, down_req, &saved_controls)) {
- return LDB_ERR_OPERATIONS_ERROR;
- }
+ control->critical = 0;
}
if (storage_format_control) {
- /* save it locally and remove it from the list */
- /* we do not need to replace them later as we
- * are keeping the original req intact */
- if (!save_controls(storage_format_control, down_req, &saved_controls)) {
- return LDB_ERR_OPERATIONS_ERROR;
- }
+ storage_format_control->critical = 0;
}
/* Add in dereference control, if we were asked to, we are
diff --git a/source4/dsdb/samdb/ldb_modules/lazy_commit.c b/source4/dsdb/samdb/ldb_modules/lazy_commit.c
index 69ac99e246..0502b2efa1 100644
--- a/source4/dsdb/samdb/ldb_modules/lazy_commit.c
+++ b/source4/dsdb/samdb/ldb_modules/lazy_commit.c
@@ -33,7 +33,6 @@ static int unlazy_op(struct ldb_module *module, struct ldb_request *req)
{
int ret;
struct ldb_request *new_req;
- struct ldb_control **saved_controls;
struct ldb_control *control = ldb_request_get_control(req, LDB_CONTROL_SERVER_LAZY_COMMIT);
if (!control) {
return ldb_next_request(module, req);
@@ -99,7 +98,7 @@ static int unlazy_op(struct ldb_module *module, struct ldb_request *req)
return ret;
}
- save_controls(control, req, &saved_controls);
+ control->critical = 0;
return ldb_next_request(module, new_req);
}
diff --git a/source4/dsdb/samdb/ldb_modules/show_deleted.c b/source4/dsdb/samdb/ldb_modules/show_deleted.c
index 11503e6d3b..666d28053c 100644
--- a/source4/dsdb/samdb/ldb_modules/show_deleted.c
+++ b/source4/dsdb/samdb/ldb_modules/show_deleted.c
@@ -38,7 +38,6 @@ static int show_deleted_search(struct ldb_module *module, struct ldb_request *re
{
struct ldb_context *ldb;
struct ldb_control *control;
- struct ldb_control **saved_controls;
struct ldb_request *down_req;
struct ldb_parse_tree *new_tree = req->op.search.tree;
int ret;
@@ -90,9 +89,9 @@ static int show_deleted_search(struct ldb_module *module, struct ldb_request *re
return ret;
}
- /* if a control is there remove if from the modified request */
- if (control && !save_controls(control, down_req, &saved_controls)) {
- return LDB_ERR_OPERATIONS_ERROR;
+ /* mark the control as done */
+ if (control) {
+ control->critical = 0;
}
/* perform the search */