[SCM] Samba Shared Repository - branch master updated

Andrew Tridgell tridge at samba.org
Mon Sep 20 16:30:39 MDT 2010


The branch, master has been updated
       via  8efd107 s4-pyrpc: fixed build on python 2.4
       via  3fe8e97 s4-rodc: fixed repsFrom store on RODC
       via  5995116 s4-kcc: a bit more debug info on repsFrom creation
      from  ead126c Merge branch 'v4-0-stable' into newmaster

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


- Log -----------------------------------------------------------------
commit 8efd1074c21fde70a31756dd54b3b31811beccc8
Author: Andrew Tridgell <tridge at samba.org>
Date:   Mon Sep 20 12:16:09 2010 -0700

    s4-pyrpc: fixed build on python 2.4
    
    Pair-Programmed-With: Jelmer Vernooij <jelmer at samba.org>

commit 3fe8e97a7289c18903a9f481a13f8793f9f17bab
Author: Andrew Tridgell <tridge at samba.org>
Date:   Sun Sep 19 21:49:00 2010 -0700

    s4-rodc: fixed repsFrom store on RODC
    
    We were disallowing repsFrom store as a RODC on the basis that it is a
    write to the directory. It should be allowed, as its is a
    non-replicated attribute.
    
    Pair-Programmed-With: Andrew Bartlett <abartlet at samba.org>

commit 59951163bea67b1a5d5eeef109f200a6323c00f3
Author: Andrew Tridgell <tridge at samba.org>
Date:   Sun Sep 19 21:48:35 2010 -0700

    s4-kcc: a bit more debug info on repsFrom creation
    
    Pair-Programmed-With: Andrew Bartlett <abartlet at samba.org>

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

Summary of changes:
 source4/dsdb/kcc/kcc_periodic.c                 |    8 ++++++-
 source4/dsdb/samdb/ldb_modules/repl_meta_data.c |   25 ++++++++++------------
 source4/librpc/rpc/pyrpc.h                      |    4 +++
 source4/librpc/rpc/pyrpc_util.c                 |    4 ---
 4 files changed, 22 insertions(+), 19 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source4/dsdb/kcc/kcc_periodic.c b/source4/dsdb/kcc/kcc_periodic.c
index a79c848..c396912 100644
--- a/source4/dsdb/kcc/kcc_periodic.c
+++ b/source4/dsdb/kcc/kcc_periodic.c
@@ -73,7 +73,8 @@ static bool check_MasterNC(struct kccsrv_partition *p, struct repsFromToBlob *r,
 		struct ldb_dn *dn;
 
 		struct GUID id2 = samdb_result_guid(msg, "invocationID");
-		if (!GUID_equal(&invocation_id, &id2)) {
+		if (GUID_all_zero(&id2) ||
+		    !GUID_equal(&invocation_id, &id2)) {
 			continue;
 		}
 
@@ -89,6 +90,9 @@ static bool check_MasterNC(struct kccsrv_partition *p, struct repsFromToBlob *r,
 			}
 			if (ldb_dn_compare(dn, p->dn) == 0) {
 				talloc_free(dn);
+				DEBUG(5,("%s hasMasterNCs match on %s in %s\n",
+					 r1->other_info->dns_name, ldb_dn_get_linearized(dn),
+					 ldb_dn_get_linearized(msg->dn)));
 				return true;
 			}
 			talloc_free(dn);
@@ -183,6 +187,7 @@ static NTSTATUS kccsrv_add_repsFrom(struct kccsrv_service *s, TALLOC_CTX *mem_ct
 				old_reps[old_count] = reps[i];
 				old_count++;
 				modified = true;
+				DEBUG(4,(__location__ ": Added repsFrom for %s\n", reps[i].ctr.ctr1.other_info->dns_name));
 			}
 		}
 
@@ -194,6 +199,7 @@ static NTSTATUS kccsrv_add_repsFrom(struct kccsrv_service *s, TALLOC_CTX *mem_ct
 				old_count--;
 				i--;
 				modified = true;
+				DEBUG(4,(__location__ ": Removed repsFrom for %s\n", reps[i].ctr.ctr1.other_info->dns_name));
 			}
 		}
 		
diff --git a/source4/dsdb/samdb/ldb_modules/repl_meta_data.c b/source4/dsdb/samdb/ldb_modules/repl_meta_data.c
index 45ef4d9..6ae8e92 100644
--- a/source4/dsdb/samdb/ldb_modules/repl_meta_data.c
+++ b/source4/dsdb/samdb/ldb_modules/repl_meta_data.c
@@ -1246,20 +1246,6 @@ static int replmd_update_rpmd(struct ldb_module *module,
 			return LDB_ERR_OPERATIONS_ERROR;
 		}
 
-		/*we have elements that will be modified*/
-		if (msg->num_elements > 0) {
-			/*if we are RODC and this is a DRSR update then its ok*/
-			if (!ldb_request_get_control(req, DSDB_CONTROL_REPLICATED_UPDATE_OID)) {
-				ret = samdb_rodc(ldb, &rodc);
-				if (ret != LDB_SUCCESS) {
-					DEBUG(4, (__location__ ": unable to tell if we are an RODC\n"));
-				} else if (rodc) {
-					ldb_asprintf_errstring(ldb, "RODC modify is forbidden\n");
-					return LDB_ERR_REFERRAL;
-				}
-			}
-		}
-
 		for (i=0; i<msg->num_elements; i++) {
 			struct ldb_message_element *old_el;
 			old_el = ldb_msg_find_element(res->msgs[0], msg->elements[i].name);
@@ -1283,6 +1269,17 @@ static int replmd_update_rpmd(struct ldb_module *module,
 		struct ldb_val *md_value;
 		struct ldb_message_element *el;
 
+		/*if we are RODC and this is a DRSR update then its ok*/
+		if (!ldb_request_get_control(req, DSDB_CONTROL_REPLICATED_UPDATE_OID)) {
+			ret = samdb_rodc(ldb, &rodc);
+			if (ret != LDB_SUCCESS) {
+				DEBUG(4, (__location__ ": unable to tell if we are an RODC\n"));
+			} else if (rodc) {
+				ldb_asprintf_errstring(ldb, "RODC modify is forbidden\n");
+				return LDB_ERR_REFERRAL;
+			}
+		}
+
 		md_value = talloc(msg, struct ldb_val);
 		if (md_value == NULL) {
 			ldb_oom(ldb);
diff --git a/source4/librpc/rpc/pyrpc.h b/source4/librpc/rpc/pyrpc.h
index c3bc838..52f4f4d 100644
--- a/source4/librpc/rpc/pyrpc.h
+++ b/source4/librpc/rpc/pyrpc.h
@@ -22,6 +22,10 @@
 
 #include "libcli/util/pyerrors.h"
 
+#ifndef Py_TYPE /* Py_TYPE is only available on Python > 2.6 */
+#define Py_TYPE(ob)             (((PyObject*)(ob))->ob_type)
+#endif
+
 #define PY_CHECK_TYPE(type, var, fail) \
 	if (!PyObject_TypeCheck(var, type)) {\
 		PyErr_Format(PyExc_TypeError, __location__ ": Expected type '%s' for '%s' of type '%s'", (type)->tp_name, #var, Py_TYPE(var)->tp_name); \
diff --git a/source4/librpc/rpc/pyrpc_util.c b/source4/librpc/rpc/pyrpc_util.c
index ba42c08..33bce38 100644
--- a/source4/librpc/rpc/pyrpc_util.c
+++ b/source4/librpc/rpc/pyrpc_util.c
@@ -31,10 +31,6 @@
 #include "lib/messaging/messaging.h"
 #include "lib/messaging/irpc.h"
 
-#ifndef Py_TYPE /* Py_TYPE is only available on Python > 2.6 */
-#define Py_TYPE(ob)             (((PyObject*)(ob))->ob_type)
-#endif
-
 bool py_check_dcerpc_type(PyObject *obj, const char *module, const char *typename)
 {
 	PyObject *mod;


-- 
Samba Shared Repository


More information about the samba-cvs mailing list