summaryrefslogtreecommitdiff
path: root/source4/lib/ldb/modules/sort.c
diff options
context:
space:
mode:
authorSimo Sorce <idra@samba.org>2007-12-24 01:38:37 -0600
committerStefan Metzmacher <metze@samba.org>2007-12-24 01:51:07 -0600
commit5a1433cae7bafe01371663aed8520ce29175cac7 (patch)
treea0bd3864fa5435e71e034bc7777fc85af5c3f3ed /source4/lib/ldb/modules/sort.c
parentc13ae707313c5bf9819a75c1699d099565d2494d (diff)
downloadsamba-5a1433cae7bafe01371663aed8520ce29175cac7.tar.gz
samba-5a1433cae7bafe01371663aed8520ce29175cac7.tar.bz2
samba-5a1433cae7bafe01371663aed8520ce29175cac7.zip
r26581: Make ldb_wait uniform, so that it is easy to remove it completely from modules
later on. (This used to be commit f75ce8c20aa2b466e9ee86fdf1702b2ffda10ddf)
Diffstat (limited to 'source4/lib/ldb/modules/sort.c')
-rw-r--r--source4/lib/ldb/modules/sort.c26
1 files changed, 24 insertions, 2 deletions
diff --git a/source4/lib/ldb/modules/sort.c b/source4/lib/ldb/modules/sort.c
index b13dbe579b..89b9a4fb19 100644
--- a/source4/lib/ldb/modules/sort.c
+++ b/source4/lib/ldb/modules/sort.c
@@ -373,7 +373,7 @@ static int server_sort_results(struct ldb_handle *handle)
return LDB_SUCCESS;
}
-static int server_sort_wait(struct ldb_handle *handle, enum ldb_wait_type type)
+static int server_sort_wait_once(struct ldb_handle *handle)
{
struct sort_context *ac;
int ret;
@@ -384,7 +384,7 @@ static int server_sort_wait(struct ldb_handle *handle, enum ldb_wait_type type)
ac = talloc_get_type(handle->private_data, struct sort_context);
- ret = ldb_wait(ac->req->handle, type);
+ ret = ldb_wait(ac->req->handle, LDB_WAIT_NONE);
if (ret != LDB_SUCCESS) {
handle->status = ret;
@@ -405,6 +405,28 @@ static int server_sort_wait(struct ldb_handle *handle, enum ldb_wait_type type)
return ret;
}
+static int server_sort_wait(struct ldb_handle *handle, enum ldb_wait_type type)
+{
+ int ret;
+
+ if (!handle || !handle->private_data) {
+ return LDB_ERR_OPERATIONS_ERROR;
+ }
+
+ if (type == LDB_WAIT_ALL) {
+ while (handle->state != LDB_ASYNC_DONE) {
+ ret = server_sort_wait_once(handle);
+ if (ret != LDB_SUCCESS) {
+ return ret;
+ }
+ }
+
+ return handle->status;
+ }
+
+ return server_sort_wait_once(handle);
+}
+
static int server_sort_init(struct ldb_module *module)
{
struct ldb_request *req;