summaryrefslogtreecommitdiff
path: root/source4
diff options
context:
space:
mode:
authorAndrew Tridgell <tridge@samba.org>2010-10-01 10:24:46 -0700
committerAndrew Tridgell <tridge@samba.org>2010-10-01 10:44:24 -0700
commit4beff4d7ba6709009ad81e3becb691b9d81e5611 (patch)
tree79b8307f720de5344e40a9914c05d843e7525fea /source4
parent9cdebd0ebcbf9b890679fa77ce6d8e0127fce28e (diff)
downloadsamba-4beff4d7ba6709009ad81e3becb691b9d81e5611.tar.gz
samba-4beff4d7ba6709009ad81e3becb691b9d81e5611.tar.bz2
samba-4beff4d7ba6709009ad81e3becb691b9d81e5611.zip
s4-dsdb: fail the transaction instead of asserting on error
It is more useful to fail the transaction and give the user an error message than to assert when we have an error in the repl_meta_data module Pair-Programmed-With: Andrew Bartlett <abartlet@samba.org>
Diffstat (limited to 'source4')
-rw-r--r--source4/dsdb/samdb/ldb_modules/repl_meta_data.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/source4/dsdb/samdb/ldb_modules/repl_meta_data.c b/source4/dsdb/samdb/ldb_modules/repl_meta_data.c
index ebd005e46e..17dcba5929 100644
--- a/source4/dsdb/samdb/ldb_modules/repl_meta_data.c
+++ b/source4/dsdb/samdb/ldb_modules/repl_meta_data.c
@@ -2981,9 +2981,17 @@ static int replmd_replicated_apply_merge(struct replmd_replicated_request *ar)
md_remote = replmd_replPropertyMetaData1_find_attid(rmd, DRSUAPI_ATTRIBUTE_name);
if (md_remote) {
md_local = replmd_replPropertyMetaData1_find_attid(&omd, DRSUAPI_ATTRIBUTE_name);
- SMB_ASSERT(md_local);
+ if (!md_local) {
+ DEBUG(0,(__location__ ": No md_local in RPMD\n"));
+ return replmd_replicated_request_werror(ar, WERR_DS_DRA_INTERNAL_ERROR);
+ }
if (replmd_replPropertyMetaData1_is_newer(md_local, md_remote)) {
- SMB_ASSERT(ldb_dn_compare(msg->dn, ar->search_msg->dn) != 0);
+ if (ldb_dn_compare(msg->dn, ar->search_msg->dn) != 0) {
+ DEBUG(0,(__location__ ": DNs don't match in RPMD: %s %s\n",
+ ldb_dn_get_linearized(msg->dn),
+ ldb_dn_get_linearized(ar->search_msg->dn)));
+ return replmd_replicated_request_werror(ar, WERR_DS_DRA_INTERNAL_ERROR);
+ }
/* TODO: Find appropriate local name (dn) for the object
* and modify msg->dn appropriately */