svn commit: samba r17056 - in branches/SOC/mkhl/ldb-map/modules: .

mkhl at samba.org mkhl at samba.org
Sat Jul 15 09:22:24 GMT 2006


Author: mkhl
Date: 2006-07-15 09:22:24 +0000 (Sat, 15 Jul 2006)
New Revision: 17056

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

Log:
Defer setting async handled until *after* the up request was copied.
When an async handle is likely to still have been copied, reset to NULL.

Martin

Modified:
   branches/SOC/mkhl/ldb-map/modules/ldb_map.c


Changeset:
Modified: branches/SOC/mkhl/ldb-map/modules/ldb_map.c
===================================================================
--- branches/SOC/mkhl/ldb-map/modules/ldb_map.c	2006-07-15 09:16:41 UTC (rev 17055)
+++ branches/SOC/mkhl/ldb-map/modules/ldb_map.c	2006-07-15 09:22:24 UTC (rev 17056)
@@ -2136,9 +2136,6 @@
 		return LDB_ERR_OPERATIONS_ERROR;
 	ac = talloc_get_type(h->private_data, struct map_async_context);
 
-	/* return or own handle to deal with this call */
-	req->async.handle = h;
-
 	/* prepare the local operation */
 	ac->local_req = talloc(ac, struct ldb_request);
 	if (ac->local_req == NULL) {
@@ -2193,6 +2190,9 @@
 	if (ldb_msg_add_string(local, IS_MAPPED, dn) != 0)
 		goto failed;
 
+	/* return or own handle to deal with this call */
+	req->async.handle = h;
+
 	ldb_set_timeout_from_prev_req(module->ldb, req, ac->remote_req);
 
 	/* continue with the remote request */
@@ -2299,9 +2299,6 @@
 		return LDB_ERR_OPERATIONS_ERROR;
 	ac = talloc_get_type(h->private_data, struct map_async_context);
 
-	/* return or own handle to deal with this call */
-	req->async.handle = h;
-
 	/* prepare the local operation */
 	ac->local_req = talloc(ac, struct ldb_request);
 	if (ac->local_req == NULL) {
@@ -2358,6 +2355,9 @@
 
 	ac->step = MAP_SEARCH_SELF_MODIFY;
 
+	/* return or own handle to deal with this call */
+	req->async.handle = h;
+
 	return ldb_next_request(module, ac->search_req);
 
 failed:
@@ -2385,8 +2385,10 @@
 
 	*(ac->local_req) = *(ac->orig_req); /* copy the request */
 
+	ac->local_req->async.handle = NULL;
 	ac->local_req->async.context = NULL;
 	ac->local_req->async.callback = NULL;
+
 	ldb_set_timeout_from_prev_req(ac->module->ldb,
 				      ac->orig_req, ac->local_req);
 
@@ -2420,8 +2422,10 @@
 
 	*(ac->remote_req) = *(ac->orig_req); /* copy the request */
 
+	ac->remote_req->async.handle = NULL;
 	ac->remote_req->async.context = NULL;
 	ac->remote_req->async.callback = NULL;
+
 	ldb_set_timeout_from_prev_req(ac->module->ldb,
 				      ac->orig_req, ac->remote_req);
 
@@ -2460,14 +2464,14 @@
 		return LDB_ERR_OPERATIONS_ERROR;
 	ac = talloc_get_type(h->private_data, struct map_async_context);
 
-	/* return or own handle to deal with this call */
-	req->async.handle = h;
-
 	/* prepare the search operation */
 	ac->search_req = search_self_req(ac, req->op.del.dn);
 	if (ac->search_req == NULL)
 		return LDB_ERR_OPERATIONS_ERROR;
 
+	/* return or own handle to deal with this call */
+	req->async.handle = h;
+
 	ac->step = MAP_SEARCH_SELF_DELETE;
 
 	return ldb_next_request(module, ac->search_req);
@@ -2492,8 +2496,10 @@
 
 	*(ac->local_req) = *(ac->orig_req); /* copy the request */
 
+	ac->local_req->async.handle = NULL;
 	ac->local_req->async.context = NULL;
 	ac->local_req->async.callback = NULL;
+
 	ldb_set_timeout_from_prev_req(ac->module->ldb,
 				      ac->orig_req, ac->local_req);
 
@@ -2543,8 +2549,10 @@
 	ac->down_req->operation = LDB_MODIFY;
 	ac->down_req->op.mod.message = msg;
 	ac->down_req->controls = NULL;
+	ac->down_req->async.handle = NULL;
 	ac->down_req->async.context = NULL;
 	ac->down_req->async.callback = NULL;
+
 	ldb_set_timeout_from_prev_req(ac->module->ldb,
 				      ac->orig_req, ac->down_req);
 
@@ -2582,8 +2590,10 @@
 
 	*(ac->remote_req) = *(ac->orig_req); /* copy the request */
 
+	ac->remote_req->async.handle = NULL;
 	ac->remote_req->async.context = NULL;
 	ac->remote_req->async.callback = NULL;
+
 	ldb_set_timeout_from_prev_req(ac->module->ldb,
 				      ac->orig_req, ac->remote_req);
 
@@ -2630,14 +2640,14 @@
 		return LDB_ERR_OPERATIONS_ERROR;
 	ac = talloc_get_type(h->private_data, struct map_async_context);
 
-	/* return or own handle to deal with this call */
-	req->async.handle = h;
-
 	/* prepare the search operation */
 	ac->search_req = search_self_req(ac, req->op.rename.olddn);
 	if (ac->search_req == NULL)
 		return LDB_ERR_OPERATIONS_ERROR;
 
+	/* return or own handle to deal with this call */
+	req->async.handle = h;
+
 	ac->step = MAP_SEARCH_SELF_RENAME;
 
 	return ldb_next_request(module, ac->search_req);



More information about the samba-cvs mailing list