s4:repl Pass schema as argument to replmd_update_rpmd()
authorAndrew Bartlett <abartlet@samba.org>
Fri, 16 Oct 2009 04:11:28 +0000 (15:11 +1100)
committerAndrew Bartlett <abartlet@samba.org>
Wed, 21 Oct 2009 11:43:53 +0000 (22:43 +1100)
source4/dsdb/samdb/ldb_modules/repl_meta_data.c

index a0dd111bdf4e83dddf6e6c706ee04e544a98c969..f6589d4b9d65808620ae8952f37b25e7fdefc2e7 100644 (file)
@@ -811,13 +811,13 @@ static int replmd_update_rpmd_element(struct ldb_context *ldb,
  * client is based on this object 
  */
 static int replmd_update_rpmd(struct ldb_module *module, 
+                             struct dsdb_schema *schema, 
                              struct ldb_message *msg, uint64_t *seq_num)
 {
        const struct ldb_val *omd_value;
        enum ndr_err_code ndr_err;
        struct replPropertyMetaDataBlob omd;
        int i;
-       struct dsdb_schema *schema;
        time_t t = time(NULL);
        NTTIME now;
        const struct GUID *our_invocation_id;
@@ -869,8 +869,6 @@ static int replmd_update_rpmd(struct ldb_module *module,
                return LDB_ERR_OPERATIONS_ERROR;
        }
 
-       schema = dsdb_get_schema(ldb);
-
        for (i=0; i<msg->num_elements; i++) {
                ret = replmd_update_rpmd_element(ldb, msg, &msg->elements[i], &omd, schema, seq_num, 
                                                 our_invocation_id, now);
@@ -982,7 +980,7 @@ static int replmd_modify(struct ldb_module *module, struct ldb_request *req)
                return ret;
        }
 
-       ret = replmd_update_rpmd(module, msg, &ac->seq_num);
+       ret = replmd_update_rpmd(module, ac->schema, msg, &ac->seq_num);
        if (ret != LDB_SUCCESS) {
                talloc_free(ac);
                return ret;
@@ -2129,6 +2127,7 @@ static int replmd_process_linked_attribute(struct ldb_module *module,
 {                                         
        struct drsuapi_DsReplicaLinkedAttribute *la = la_entry->la;
        struct ldb_context *ldb = ldb_module_get_ctx(module);
+       struct dsdb_schema *schema = dsdb_get_schema(ldb);
        struct drsuapi_DsReplicaObjectIdentifier3 target;
        struct ldb_message *msg;
        struct ldb_message_element *ret_el;
@@ -2207,7 +2206,7 @@ linked_attributes[0]:
        }
 
        /* find the attribute being modified */
-       attr = dsdb_attribute_by_attributeID_id(dsdb_get_schema(ldb), la->attid);
+       attr = dsdb_attribute_by_attributeID_id(schema, la->attid);
        if (attr == NULL) {
                DEBUG(0, (__location__ ": Unable to find attributeID 0x%x\n", la->attid));
                talloc_free(tmp_ctx);
@@ -2245,7 +2244,7 @@ linked_attributes[0]:
        ret_el->values[0].data = (uint8_t *)ldb_dn_get_extended_linearized(tmp_ctx, target_dn, 1);
        ret_el->values[0].length = strlen((char *)ret_el->values[0].data);
 
-       ret = replmd_update_rpmd(module, msg, &seq_num);
+       ret = replmd_update_rpmd(module, schema, msg, &seq_num);
        if (ret != LDB_SUCCESS) {
                talloc_free(tmp_ctx);
                return ret;