summaryrefslogtreecommitdiff
path: root/source4/lib/ldb/common/ldb_modules.c
diff options
context:
space:
mode:
Diffstat (limited to 'source4/lib/ldb/common/ldb_modules.c')
-rw-r--r--source4/lib/ldb/common/ldb_modules.c23
1 files changed, 21 insertions, 2 deletions
diff --git a/source4/lib/ldb/common/ldb_modules.c b/source4/lib/ldb/common/ldb_modules.c
index bc27d1ed1b..4ce404d096 100644
--- a/source4/lib/ldb/common/ldb_modules.c
+++ b/source4/lib/ldb/common/ldb_modules.c
@@ -347,10 +347,29 @@ int ldb_load_modules(struct ldb_context *ldb, const char *options[])
/*
helper functions to call the next module in chain
*/
+
int ldb_next_request(struct ldb_module *module, struct ldb_request *request)
{
- FIND_OP(module, request);
- return module->ops->request(module, request);
+ switch (request->operation) {
+ case LDB_ASYNC_SEARCH:
+ FIND_OP(module, search);
+ return module->ops->search(module, request);
+ case LDB_ASYNC_ADD:
+ FIND_OP(module, add);
+ return module->ops->add(module, request);
+ case LDB_ASYNC_MODIFY:
+ FIND_OP(module, modify);
+ return module->ops->modify(module, request);
+ case LDB_ASYNC_DELETE:
+ FIND_OP(module, del);
+ return module->ops->del(module, request);
+ case LDB_ASYNC_RENAME:
+ FIND_OP(module, rename);
+ return module->ops->rename(module, request);
+ default:
+ FIND_OP(module, request);
+ return module->ops->request(module, request);
+ }
}
int ldb_next_init(struct ldb_module *module)