summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Tridgell <tridge@samba.org>2010-11-04 20:33:31 +1100
committerAndrew Tridgell <tridge@samba.org>2010-11-04 20:35:44 +1100
commitc5f07d33ae72785877b4675aaaa1b446bed14ea4 (patch)
tree9469c28a56d2b0f5156152caed3e240ad285889a
parente606298631d9e4659e677041095511c1c353a4b5 (diff)
downloadsamba-c5f07d33ae72785877b4675aaaa1b446bed14ea4.tar.gz
samba-c5f07d33ae72785877b4675aaaa1b446bed14ea4.tar.bz2
samba-c5f07d33ae72785877b4675aaaa1b446bed14ea4.zip
s4-dsdb: use LDB_FLAG_INTERNAL_DISABLE_SINGLE_VALUE_CHECK in dsdb
when we are creating linked attributes with multiple values (some deleted), use LDB_FLAG_INTERNAL_DISABLE_SINGLE_VALUE_CHECK to disable that checking.
-rw-r--r--source4/dsdb/samdb/ldb_modules/linked_attributes.c6
-rw-r--r--source4/dsdb/samdb/ldb_modules/repl_meta_data.c4
2 files changed, 8 insertions, 2 deletions
diff --git a/source4/dsdb/samdb/ldb_modules/linked_attributes.c b/source4/dsdb/samdb/ldb_modules/linked_attributes.c
index d54060b293..60455251e3 100644
--- a/source4/dsdb/samdb/ldb_modules/linked_attributes.c
+++ b/source4/dsdb/samdb/ldb_modules/linked_attributes.c
@@ -681,7 +681,11 @@ static int linked_attributes_fix_links(struct ldb_module *module,
return ret;
}
- ret = dsdb_module_modify(module, msg, DSDB_FLAG_NEXT_MODULE | DSDB_MODIFY_RELAX);
+ /* we may be putting multiple values in an attribute -
+ disable checking for this attribute */
+ el2->flags |= LDB_FLAG_INTERNAL_DISABLE_SINGLE_VALUE_CHECK;
+
+ ret = dsdb_module_modify(module, msg, DSDB_FLAG_NEXT_MODULE);
if (ret != LDB_SUCCESS) {
ldb_asprintf_errstring(ldb, "Linked attribute %s->%s between %s and %s - update failed - %s",
el->name, target->lDAPDisplayName,
diff --git a/source4/dsdb/samdb/ldb_modules/repl_meta_data.c b/source4/dsdb/samdb/ldb_modules/repl_meta_data.c
index d7ad46fd00..907cc4a066 100644
--- a/source4/dsdb/samdb/ldb_modules/repl_meta_data.c
+++ b/source4/dsdb/samdb/ldb_modules/repl_meta_data.c
@@ -4090,7 +4090,9 @@ linked_attributes[0]:
return ret;
}
- ret = dsdb_module_modify(module, msg, DSDB_FLAG_NEXT_MODULE | DSDB_MODIFY_RELAX);
+ old_el->flags |= LDB_FLAG_INTERNAL_DISABLE_SINGLE_VALUE_CHECK;
+
+ ret = dsdb_module_modify(module, msg, DSDB_FLAG_NEXT_MODULE);
if (ret != LDB_SUCCESS) {
ldb_debug(ldb, LDB_DEBUG_WARNING, "Failed to apply linked attribute change '%s'\n%s\n",
ldb_errstring(ldb),