diff options
author | Simo Sorce <idra@samba.org> | 2006-05-29 01:30:02 +0000 |
---|---|---|
committer | Gerald (Jerry) Carter <jerry@samba.org> | 2007-10-10 14:08:41 -0500 |
commit | 3a4d7eb2c08a06fac89c34d132f1c32751ce7ad5 (patch) | |
tree | 7d34281bba70aaa79d7527b823f00f625836dc3a /source4/lib/ldb/common/ldb_modules.c | |
parent | 0bd3636a1249dd55f7595c06892e2db65af18bfc (diff) | |
download | samba-3a4d7eb2c08a06fac89c34d132f1c32751ce7ad5.tar.gz samba-3a4d7eb2c08a06fac89c34d132f1c32751ce7ad5.tar.bz2 samba-3a4d7eb2c08a06fac89c34d132f1c32751ce7ad5.zip |
r15927: Optimize ldb module traverse while keeping the API intact.
I was sick of jumping inot each module for each request,
even the ones not handle by that module.
(This used to be commit 7d65105e885a28584e8555453b90232c43a92bf7)
Diffstat (limited to 'source4/lib/ldb/common/ldb_modules.c')
-rw-r--r-- | source4/lib/ldb/common/ldb_modules.c | 23 |
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) |