From: Anatoliy Atanasov Date: Fri, 3 Jul 2009 12:24:40 +0000 (+0300) Subject: Fix for schemaUpdateNow command X-Git-Tag: tevent-0.9.8~731 X-Git-Url: http://git.samba.org/samba.git/?p=samba.git;a=commitdiff_plain;h=6b05a9079ce38eb590f4a94b427bc69123cd6a23 Fix for schemaUpdateNow command --- diff --git a/source4/dsdb/samdb/ldb_modules/partition.c b/source4/dsdb/samdb/ldb_modules/partition.c index 9763664940b..563abf672af 100644 --- a/source4/dsdb/samdb/ldb_modules/partition.c +++ b/source4/dsdb/samdb/ldb_modules/partition.c @@ -1060,7 +1060,13 @@ static int partition_extended_schema_update_now(struct ldb_module *module, struc } /* fire the first one */ - return partition_call_first(ac); + ret = partition_call_first(ac); + + if (ret != LDB_SUCCESS){ + return ret; + } + + return ldb_request_done(req, ret); } diff --git a/source4/dsdb/samdb/ldb_modules/rootdse.c b/source4/dsdb/samdb/ldb_modules/rootdse.c index 29c4f5958fb..7080fb632f1 100644 --- a/source4/dsdb/samdb/ldb_modules/rootdse.c +++ b/source4/dsdb/samdb/ldb_modules/rootdse.c @@ -455,7 +455,7 @@ static int rootdse_modify(struct ldb_module *module, struct ldb_request *req) } talloc_free(ext_res); - return ret; + return ldb_request_done(req, ret); } _PUBLIC_ const struct ldb_module_ops ldb_rootdse_module_ops = { diff --git a/source4/dsdb/samdb/ldb_modules/schema_fsmo.c b/source4/dsdb/samdb/ldb_modules/schema_fsmo.c index b1d8711cfa1..1b8f786c354 100644 --- a/source4/dsdb/samdb/ldb_modules/schema_fsmo.c +++ b/source4/dsdb/samdb/ldb_modules/schema_fsmo.c @@ -297,6 +297,8 @@ static int schema_fsmo_extended(struct ldb_module *module, struct ldb_request *r return ret; } + dsdb_make_schema_global(ldb); + talloc_free(mem_ctx); return LDB_SUCCESS; } diff --git a/source4/dsdb/schema/schema_init.c b/source4/dsdb/schema/schema_init.c index 1084679f8dd..dfa745e305c 100644 --- a/source4/dsdb/schema/schema_init.c +++ b/source4/dsdb/schema/schema_init.c @@ -576,7 +576,7 @@ WERROR dsdb_read_prefixes_from_ldb(TALLOC_CTX *mem_ctx, struct ldb_context *ldb, (*prefixes)[i].id = blob->ctr.dsdb.mappings[i].id_prefix<<16; oid = talloc_strdup(mem_ctx, blob->ctr.dsdb.mappings[i].oid.oid); (*prefixes)[i].oid = talloc_asprintf_append(oid, "."); - (*prefixes)[i].oid_len = strlen(blob->ctr.dsdb.mappings[i].oid.oid); + (*prefixes)[i].oid_len = strlen((*prefixes)[i].oid); } talloc_free(blob); diff --git a/source4/dsdb/schema/schema_set.c b/source4/dsdb/schema/schema_set.c index 8b1188a1b5b..5ded04e9da1 100644 --- a/source4/dsdb/schema/schema_set.c +++ b/source4/dsdb/schema/schema_set.c @@ -135,7 +135,7 @@ static int dsdb_schema_set_attributes(struct ldb_context *ldb, struct dsdb_schem mod_msg = ldb_msg_diff(ldb, res->msgs[0], msg); if (mod_msg->num_elements > 0) { - ret = ldb_modify(ldb, mod_msg); + ret = samdb_replace(ldb, mem_ctx, mod_msg); } } @@ -154,7 +154,7 @@ static int dsdb_schema_set_attributes(struct ldb_context *ldb, struct dsdb_schem if (ret == LDB_ERR_NO_SUCH_OBJECT) { ret = ldb_add(ldb, msg_idx); } else if (ret != LDB_SUCCESS) { - } else if (res->count != 1) { + } else if (res_idx->count != 1) { ret = ldb_add(ldb, msg_idx); } else { ret = LDB_SUCCESS; @@ -163,7 +163,7 @@ static int dsdb_schema_set_attributes(struct ldb_context *ldb, struct dsdb_schem mod_msg = ldb_msg_diff(ldb, res_idx->msgs[0], msg_idx); if (mod_msg->num_elements > 0) { - ret = ldb_modify(ldb, mod_msg); + ret = samdb_replace(ldb, mem_ctx, mod_msg); } } if (ret == LDB_ERR_INSUFFICIENT_ACCESS_RIGHTS) {