svn commit: samba r20776 - in branches/SAMBA_4_0/source/dsdb/samdb/ldb_modules: .

metze at samba.org metze at samba.org
Sun Jan 14 18:19:26 GMT 2007


Author: metze
Date: 2007-01-14 18:19:26 +0000 (Sun, 14 Jan 2007)
New Revision: 20776

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

Log:
require a loaded dsdb_schema for originating add and modify operations
(later we'll require it for all originating changes...)

metze
Modified:
   branches/SAMBA_4_0/source/dsdb/samdb/ldb_modules/repl_meta_data.c


Changeset:
Modified: branches/SAMBA_4_0/source/dsdb/samdb/ldb_modules/repl_meta_data.c
===================================================================
--- branches/SAMBA_4_0/source/dsdb/samdb/ldb_modules/repl_meta_data.c	2007-01-14 18:03:26 UTC (rev 20775)
+++ branches/SAMBA_4_0/source/dsdb/samdb/ldb_modules/repl_meta_data.c	2007-01-14 18:19:26 UTC (rev 20776)
@@ -168,7 +168,9 @@
 	return 0;
 }
 
-static int replmd_add_originating(struct ldb_module *module, struct ldb_request *req)
+static int replmd_add_originating(struct ldb_module *module,
+				  struct ldb_request *req,
+				  const struct dsdb_schema *schema)
 {
 	struct ldb_request *down_req;
 	struct ldb_message_element *attribute;
@@ -248,15 +250,25 @@
 
 static int replmd_add(struct ldb_module *module, struct ldb_request *req)
 {
+	const struct dsdb_schema *schema;
+
 	/* do not manipulate our control entries */
 	if (ldb_dn_is_special(req->op.add.message->dn)) {
 		return ldb_next_request(module, req);
 	}
 
-	return replmd_add_originating(module, req);
+	schema = dsdb_get_schema(module->ldb);
+	if (!schema) {
+		ldb_debug_set(module->ldb, LDB_DEBUG_FATAL, "replmd_add: no dsdb_schema loaded");
+		return LDB_ERR_CONSTRAINT_VIOLATION;
+	}
+
+	return replmd_add_originating(module, req, schema);
 }
 
-static int replmd_modify_originating(struct ldb_module *module, struct ldb_request *req)
+static int replmd_modify_originating(struct ldb_module *module,
+				     struct ldb_request *req,
+				     const struct dsdb_schema *schema)
 {
 	struct ldb_request *down_req;
 	struct ldb_message *msg;
@@ -310,12 +322,20 @@
 
 static int replmd_modify(struct ldb_module *module, struct ldb_request *req)
 {
+	const struct dsdb_schema *schema;
+ 
 	/* do not manipulate our control entries */
 	if (ldb_dn_is_special(req->op.mod.message->dn)) {
 		return ldb_next_request(module, req);
 	}
 
-	return replmd_modify_originating(module, req);
+	schema = dsdb_get_schema(module->ldb);
+	if (!schema) {
+		ldb_debug_set(module->ldb, LDB_DEBUG_FATAL, "replmd_modify: no dsdb_schema loaded");
+		return LDB_ERR_CONSTRAINT_VIOLATION;
+	}
+
+	return replmd_modify_originating(module, req, schema);
 }
 
 static int replmd_replicated_request_reply_helper(struct replmd_replicated_request *ar, int ret)
@@ -553,8 +573,8 @@
 	 * TODO: add rename conflict handling
 	 */
 	if (ldb_dn_compare(msg->dn, ar->sub.search_msg->dn) != 0) {
-		ldb_debug(ar->module->ldb, LDB_DEBUG_FATAL, "replmd_replicated_apply_merge[%u]: rename not supported",
-			  ar->index_current);
+		ldb_debug_set(ar->module->ldb, LDB_DEBUG_FATAL, "replmd_replicated_apply_merge[%u]: rename not supported",
+			      ar->index_current);
 		ldb_debug(ar->module->ldb, LDB_DEBUG_FATAL, "%s => %s\n",
 			  ldb_dn_get_linearized(ar->sub.search_msg->dn),
 			  ldb_dn_get_linearized(msg->dn));



More information about the samba-cvs mailing list