Author: metze
Date: 2006-12-12 17:37:41 +0000 (Tue, 12 Dec 2006)
New Revision: 20123

WebSVN: 
http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=20123

Log:
- avoid some more talloc_get_type() calls
- pass down ldb_request

metze
Modified:
   branches/SAMBA_4_0/source/lib/ldb/ldb_ildap/ldb_ildap.c


Changeset:
Modified: branches/SAMBA_4_0/source/lib/ldb/ldb_ildap/ldb_ildap.c
===================================================================
--- branches/SAMBA_4_0/source/lib/ldb/ldb_ildap/ldb_ildap.c     2006-12-12 
17:20:38 UTC (rev 20122)
+++ branches/SAMBA_4_0/source/lib/ldb/ldb_ildap/ldb_ildap.c     2006-12-12 
17:37:41 UTC (rev 20123)
@@ -59,6 +59,8 @@
 
 struct ildb_context {
        struct ldb_module *module;
+       struct ildb_private *ildb;
+       struct ldb_handle *handle;
        struct ldap_request *req;
        void *context;
        int (*callback)(struct ldb_context *, void *, struct ldb_reply *);
@@ -321,53 +323,51 @@
        }
 }
 
-static struct ldb_handle *init_ildb_handle(struct ldb_module *module, 
-                                          void *context,
-                                          int (*callback)(struct ldb_context 
*, void *, struct ldb_reply *))
+static struct ildb_context *init_ildb_handle(struct ildb_private *ildb,
+                                            struct ldb_request *req)
 {
-       struct ildb_private *ildb = talloc_get_type(module->private_data, 
struct ildb_private);
        struct ildb_context *ildb_ac;
        struct ldb_handle *h;
 
        h = talloc_zero(ildb->ldap, struct ldb_handle);
        if (h == NULL) {
-               ldb_set_errstring(module->ldb, "Out of Memory");
+               ldb_set_errstring(ildb->module->ldb, "Out of Memory");
                return NULL;
        }
 
-       h->module = module;
+       h->module = ildb->module;
 
        ildb_ac = talloc(h, struct ildb_context);
        if (ildb_ac == NULL) {
-               ldb_set_errstring(module->ldb, "Out of Memory");
+               ldb_set_errstring(ildb->module->ldb, "Out of Memory");
                talloc_free(h);
                return NULL;
        }
 
-       h->private_data = (void *)ildb_ac;
+       h->private_data = ildb_ac;
 
        h->state = LDB_ASYNC_INIT;
        h->status = LDB_SUCCESS;
 
-       ildb_ac->module = module;
-       ildb_ac->context = context;
-       ildb_ac->callback = callback;
+       ildb_ac->module = ildb->module;
+       ildb_ac->ildb = ildb;
+       ildb_ac->handle = h;
+       ildb_ac->context = req->context;
+       ildb_ac->callback = req->callback;
 
-       return h;
+       req->handle = h;
+       return ildb_ac;
 }
 
 static int ildb_request_send(struct ildb_private *ildb, struct ldap_message 
*msg, struct ldb_request *r)
 {
-       struct ldb_handle *h = init_ildb_handle(ildb->module, r->context, 
r->callback);
-       struct ildb_context *ildb_ac;
+       struct ildb_context *ildb_ac = init_ildb_handle(ildb, r);
        struct ldap_request *req;
 
-       if (!h) {
+       if (!ildb_ac) {
                return LDB_ERR_OPERATIONS_ERROR;                
        }
 
-       ildb_ac = talloc_get_type(h->private_data, struct ildb_context);
-
        req = ldap_request_send(ildb->ldap, msg);
        if (req == NULL) {
                ldb_set_errstring(ildb->module->ldb, "async send request 
failed");
@@ -382,37 +382,31 @@
        talloc_free(req->time_event);
        req->time_event = NULL;
        if (r->timeout) {
-               req->time_event = event_add_timed(req->conn->event.event_ctx, 
h, 
+               req->time_event = event_add_timed(req->conn->event.event_ctx, 
ildb_ac->handle, 
                                                  
timeval_current_ofs(r->timeout, 0),
-                                                 ildb_request_timeout, h);
+                                                 ildb_request_timeout, 
ildb_ac->handle);
        }
 
        req->async.fn = ildb_callback;
-       req->async.private_data = h;
+       req->async.private_data = ildb_ac->handle;
        ildb_ac->req = talloc_move(ildb_ac, &req);
 
-       r->handle = h;
        return LDB_SUCCESS;
 }
 
 static int ildb_request_noop(struct ildb_private *ildb, struct ldb_request 
*req) 
 {
-       struct ldb_handle *h = init_ildb_handle(ildb->module, req->context, 
req->callback);
-       struct ildb_context *ildb_ac;
+       struct ildb_context *ildb_ac = init_ildb_handle(ildb, req);
        int ret = LDB_SUCCESS;
 
-       if (!h) {
+       if (!ildb_ac) {
                return LDB_ERR_OPERATIONS_ERROR;                
        }
 
-       ildb_ac = talloc_get_type(h->private_data, struct ildb_context);
-
-       req->handle = h;
-
        if (ildb_ac->callback) {
                ret = ildb_ac->callback(ildb->module->ldb, ildb_ac->context, 
NULL);
        }
-       req->handle->state = LDB_ASYNC_DONE;
+       ildb_ac->handle->state = LDB_ASYNC_DONE;
        return ret;
 }
 

Reply via email to