[SCM] Samba Shared Repository - branch master updated - eb935e08d388aab7e02f8ec0ce58b0a62808de5c

Stefan Metzmacher metze at samba.org
Mon Sep 29 02:16:12 GMT 2008


The branch, master has been updated
       via  eb935e08d388aab7e02f8ec0ce58b0a62808de5c (commit)
       via  8b7199e7b22ac727ebc65308bf08360dc9f4b0c0 (commit)
       via  ee2bcfacdf32b0c55c6a78ae1ad7b55699611d1b (commit)
      from  a9a59f5f3d7f82a8065424310d3b32d796a43e75 (commit)

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit eb935e08d388aab7e02f8ec0ce58b0a62808de5c
Author: Stefan Metzmacher <metze at samba.org>
Date:   Sat Sep 27 20:37:27 2008 +0200

    s4:configure: require tdb >= 1.1.3 from the system
    
    metze

commit 8b7199e7b22ac727ebc65308bf08360dc9f4b0c0
Author: Stefan Metzmacher <metze at samba.org>
Date:   Sat Sep 27 20:35:52 2008 +0200

    lib/tdb: increase the version number after some critial changes
    
    The tdb_transaction/traverse interaction fixes are critical.
    
    metze

commit ee2bcfacdf32b0c55c6a78ae1ad7b55699611d1b
Author: Stefan Metzmacher <metze at samba.org>
Date:   Sat Sep 27 02:27:54 2008 +0200

    s4:dsdb: passdown DSDB_CONTROL_REPLICATED_UPDATE_OID for replicated updates
    
    We need to make sure replicated updates are handled differently
    in some situations, e.g. we should bypass the schema checks.
    
    metze

-----------------------------------------------------------------------

Summary of changes:
 lib/tdb/configure.ac                            |    2 +-
 source3/samba4.m4                               |    2 +-
 source4/configure.ac                            |    2 +-
 source4/dsdb/samdb/ldb_modules/repl_meta_data.c |   27 ++++++++++++++++++++--
 source4/dsdb/samdb/ldb_modules/schema_fsmo.c    |   10 ++++++++
 source4/dsdb/samdb/samdb.h                      |    3 ++
 source4/setup/schema_samba4.ldif                |    2 +
 7 files changed, 42 insertions(+), 6 deletions(-)


Changeset truncated at 500 lines:

diff --git a/lib/tdb/configure.ac b/lib/tdb/configure.ac
index 4bf2e98..2feaa6f 100644
--- a/lib/tdb/configure.ac
+++ b/lib/tdb/configure.ac
@@ -2,7 +2,7 @@ AC_PREREQ(2.50)
 AC_DEFUN([SMB_MODULE_DEFAULT], [echo -n ""])
 AC_DEFUN([SMB_LIBRARY_ENABLE], [echo -n ""])
 AC_DEFUN([SMB_ENABLE], [echo -n ""])
-AC_INIT(tdb, 1.1.2)
+AC_INIT(tdb, 1.1.3)
 AC_CONFIG_SRCDIR([common/tdb.c])
 AC_CONFIG_HEADER(include/config.h)
 AC_LIBREPLACE_ALL_CHECKS
diff --git a/source3/samba4.m4 b/source3/samba4.m4
index 728fd2d..81f1809 100644
--- a/source3/samba4.m4
+++ b/source3/samba4.m4
@@ -35,7 +35,7 @@ SMB_EXT_LIB_FROM_PKGCONFIG(LIBTALLOC, talloc >= 1.2.0,
 	]
 )
 
-SMB_EXT_LIB_FROM_PKGCONFIG(LIBTDB, tdb >= 1.1.0,
+SMB_EXT_LIB_FROM_PKGCONFIG(LIBTDB, tdb >= 1.1.3,
 	[],
 	[
 		m4_include(../lib/tdb/libtdb.m4)
diff --git a/source4/configure.ac b/source4/configure.ac
index fa2d8d9..611b8dd 100644
--- a/source4/configure.ac
+++ b/source4/configure.ac
@@ -46,7 +46,7 @@ SMB_EXT_LIB_FROM_PKGCONFIG(LIBTALLOC, talloc >= 1.2.0,
 	]
 )
 
-SMB_EXT_LIB_FROM_PKGCONFIG(LIBTDB, tdb >= 1.1.0,
+SMB_EXT_LIB_FROM_PKGCONFIG(LIBTDB, tdb >= 1.1.3,
 	[],
 	[
 		m4_include(../lib/tdb/libtdb.m4)
diff --git a/source4/dsdb/samdb/ldb_modules/repl_meta_data.c b/source4/dsdb/samdb/ldb_modules/repl_meta_data.c
index dd5faf8..fbaf461 100644
--- a/source4/dsdb/samdb/ldb_modules/repl_meta_data.c
+++ b/source4/dsdb/samdb/ldb_modules/repl_meta_data.c
@@ -58,6 +58,9 @@ struct replmd_replicated_request {
 
 	struct dsdb_extended_replicated_objects *objs;
 
+	/* the controls we pass down */
+	struct ldb_control **controls;
+
 	uint32_t index_current;
 
 	struct {
@@ -700,7 +703,7 @@ static int replmd_replicated_apply_add(struct replmd_replicated_request *ar)
 				ar->module->ldb,
 				ar->sub.mem_ctx,
 				msg,
-				NULL,
+				ar->controls,
 				ar,
 				replmd_replicated_apply_add_callback);
 	if (ret != LDB_SUCCESS) return replmd_replicated_request_error(ar, ret);
@@ -951,7 +954,7 @@ static int replmd_replicated_apply_merge(struct replmd_replicated_request *ar)
 				ar->module->ldb,
 				ar->sub.mem_ctx,
 				msg,
-				NULL,
+				ar->controls,
 				ar,
 				replmd_replicated_apply_merge_callback);
 	if (ret != LDB_SUCCESS) return replmd_replicated_request_error(ar, ret);
@@ -1379,7 +1382,7 @@ static int replmd_replicated_uptodate_modify(struct replmd_replicated_request *a
 				ar->module->ldb,
 				ar->sub.mem_ctx,
 				msg,
-				NULL,
+				ar->controls,
 				ar,
 				replmd_replicated_uptodate_modify_callback);
 	if (ret != LDB_SUCCESS) return replmd_replicated_request_error(ar, ret);
@@ -1491,6 +1494,8 @@ static int replmd_extended_replicated_objects(struct ldb_module *module, struct
 {
 	struct dsdb_extended_replicated_objects *objs;
 	struct replmd_replicated_request *ar;
+	struct ldb_control **ctrls;
+	int ret;
 
 	ldb_debug(module->ldb, LDB_DEBUG_TRACE, "replmd_extended_replicated_objects\n");
 
@@ -1511,6 +1516,22 @@ static int replmd_extended_replicated_objects(struct ldb_module *module, struct
 		return LDB_ERR_OPERATIONS_ERROR;
 	}
 
+	ctrls = req->controls;
+
+	if (req->controls) {
+		req->controls = talloc_memdup(ar, req->controls,
+					      talloc_get_size(req->controls));
+		if (!req->controls) return replmd_replicated_request_werror(ar, WERR_NOMEM);
+	}
+
+	ret = ldb_request_add_control(req, DSDB_CONTROL_REPLICATED_UPDATE_OID, false, NULL);
+	if (ret != LDB_SUCCESS) {
+		return ret;
+	}
+
+	ar->controls = req->controls;
+	req->controls = ctrls;
+
 #ifdef REPLMD_FULL_ASYNC /* TODO: activate this code when ldb support full async code */ 
 	return replmd_replicated_apply_next(ar);
 #else
diff --git a/source4/dsdb/samdb/ldb_modules/schema_fsmo.c b/source4/dsdb/samdb/ldb_modules/schema_fsmo.c
index 968b19c..4b6e9e1 100644
--- a/source4/dsdb/samdb/ldb_modules/schema_fsmo.c
+++ b/source4/dsdb/samdb/ldb_modules/schema_fsmo.c
@@ -152,6 +152,16 @@ static int schema_fsmo_add(struct ldb_module *module, struct ldb_request *req)
 	uint32_t id32;
 	WERROR status;
 
+	/* special objects should always go through */
+	if (ldb_dn_is_special(req->op.add.message->dn)) {
+		return ldb_next_request(module, req);
+	}
+
+	/* replicated update should always go through */
+	if (ldb_request_get_control(req, DSDB_CONTROL_REPLICATED_UPDATE_OID)) {
+		return ldb_next_request(module, req);
+	}
+
 	schema = dsdb_get_schema(module->ldb);
 	if (!schema) {
 		return ldb_next_request(module, req);
diff --git a/source4/dsdb/samdb/samdb.h b/source4/dsdb/samdb/samdb.h
index f24a75f..93068d6 100644
--- a/source4/dsdb/samdb/samdb.h
+++ b/source4/dsdb/samdb/samdb.h
@@ -56,6 +56,9 @@ struct dsdb_control_current_partition {
 	struct ldb_module *module;
 };
 
+#define DSDB_CONTROL_REPLICATED_UPDATE_OID "1.3.6.1.4.1.7165.4.3.3"
+/* DSDB_CONTROL_REPLICATED_UPDATE_OID has NULL data */
+
 #define DSDB_EXTENDED_REPLICATED_OBJECTS_OID "1.3.6.1.4.1.7165.4.4.1"
 struct dsdb_extended_replicated_object {
 	struct ldb_message *msg;
diff --git a/source4/setup/schema_samba4.ldif b/source4/setup/schema_samba4.ldif
index 3e129e4..2c00739 100644
--- a/source4/setup/schema_samba4.ldif
+++ b/source4/setup/schema_samba4.ldif
@@ -174,6 +174,8 @@ oMSyntax: 20
 
 #Allocated: DSDB_CONTROL_CURRENT_PARTITION_OID 1.3.6.1.4.1.7165.4.3.2
 
+#Allocated: DSDB_CONTROL_REPLICATED_UPDATE_OID 1.3.6.1.4.1.7165.4.3.3
+
 #Allocated: DSDB_EXTENDED_REPLICATED_OBJECTS_OID 1.3.6.1.4.1.7165.4.4.1
 
 #Allocated: (middleName) attributeID: 1.3.6.1.4.1.7165.4.255.1


-- 
Samba Shared Repository


More information about the samba-cvs mailing list