diff options
author | Simo Sorce <idra@samba.org> | 2006-03-10 15:28:25 +0000 |
---|---|---|
committer | Gerald (Jerry) Carter <jerry@samba.org> | 2007-10-10 13:56:56 -0500 |
commit | 54f26ea2cf62dd14924b9f32e768061f27329b9d (patch) | |
tree | f513e7c325b685f068d5000384def10dd129d082 /source4/lib/ldb/modules/sort.c | |
parent | 3baf0606040419988f1a08c0da7f546c5904d8ca (diff) | |
download | samba-54f26ea2cf62dd14924b9f32e768061f27329b9d.tar.gz samba-54f26ea2cf62dd14924b9f32e768061f27329b9d.tar.bz2 samba-54f26ea2cf62dd14924b9f32e768061f27329b9d.zip |
r14162: Minor fixes on sort
Initial work on async paged_results
(This used to be commit 72523eae7f8925a2c23d3260875345adcf1661bb)
Diffstat (limited to 'source4/lib/ldb/modules/sort.c')
-rw-r--r-- | source4/lib/ldb/modules/sort.c | 53 |
1 files changed, 28 insertions, 25 deletions
diff --git a/source4/lib/ldb/modules/sort.c b/source4/lib/ldb/modules/sort.c index 08047c21f5..820ba1c1f7 100644 --- a/source4/lib/ldb/modules/sort.c +++ b/source4/lib/ldb/modules/sort.c @@ -89,6 +89,9 @@ static struct ldb_async_handle *init_handle(void *mem_ctx, struct ldb_module *mo h->private_data = (void *)ac; + h->state = LDB_ASYNC_INIT; + h->status = LDB_SUCCESS; + ac->module = module; ac->up_context = context; ac->up_callback = callback; @@ -423,31 +426,6 @@ static int server_sort_search_async(struct ldb_module *module, struct ldb_contro return ldb_next_request(module, ac->req); } -static int server_sort(struct ldb_module *module, struct ldb_request *req) -{ - struct ldb_control *control; - - /* check if there's a paged request control */ - control = get_control_from_list(req->controls, LDB_CONTROL_SERVER_SORT_OID); - if (control == NULL) { - /* not found go on */ - return ldb_next_request(module, req); - } - - switch (req->operation) { - - case LDB_REQ_SEARCH: - return server_sort_search(module, control, req); - - case LDB_ASYNC_SEARCH: - return server_sort_search_async(module, control, req); - - default: - return LDB_ERR_PROTOCOL_ERROR; - - } -} - static int server_sort_async_results(struct ldb_async_handle *handle) { struct sort_async_context *ac; @@ -548,6 +526,31 @@ static int server_sort_async_wait(struct ldb_async_handle *handle, enum ldb_asyn return ret; } +static int server_sort(struct ldb_module *module, struct ldb_request *req) +{ + struct ldb_control *control; + + /* check if there's a paged request control */ + control = get_control_from_list(req->controls, LDB_CONTROL_SERVER_SORT_OID); + if (control == NULL) { + /* not found go on */ + return ldb_next_request(module, req); + } + + switch (req->operation) { + + case LDB_REQ_SEARCH: + return server_sort_search(module, control, req); + + case LDB_ASYNC_SEARCH: + return server_sort_search_async(module, control, req); + + default: + return LDB_ERR_PROTOCOL_ERROR; + + } +} + static int server_sort_init(struct ldb_module *module) { struct ldb_request *req; |