s4-dsdb: Implement module switching in dsdb_module_search_dn()
authorKamen Mazdrashki <kamenim@samba.org>
Tue, 6 Jul 2010 00:31:17 +0000 (03:31 +0300)
committerKamen Mazdrashki <kamenim@samba.org>
Wed, 7 Jul 2010 23:38:36 +0000 (02:38 +0300)
This allows caller to choose from where to start DN search

source4/dsdb/samdb/ldb_modules/util.c

index 00ae593c46622d6a79b6b4f3ff7ebe43b77372a8..8797b106e7ac04b313815f52a1e1198c27f43cd2 100644 (file)
@@ -71,7 +71,16 @@ int dsdb_module_search_dn(struct ldb_module *module,
                return ret;
        }
 
-       ret = ldb_next_request(module, req);
+       /* Run the new request */
+       if (dsdb_flags & DSDB_FLAG_OWN_MODULE) {
+               const struct ldb_module_ops *ops = ldb_module_get_ops(module);
+               ret = ops->modify(module, req);
+       } else if (dsdb_flags & DSDB_FLAG_TOP_MODULE) {
+               ret = ldb_request(ldb_module_get_ctx(module), req);
+       } else {
+               SMB_ASSERT(dsdb_flags & DSDB_FLAG_NEXT_MODULE);
+               ret = ldb_next_request(module, req);
+       }
        if (ret == LDB_SUCCESS) {
                ret = ldb_wait(req->handle, LDB_WAIT_ALL);
        }