diff options
author | Stefan Metzmacher <metze@samba.org> | 2007-01-13 10:53:12 +0000 |
---|---|---|
committer | Gerald (Jerry) Carter <jerry@samba.org> | 2007-10-10 14:40:32 -0500 |
commit | 7ff19c935de67089f7a807bafb1f6e206ff6c585 (patch) | |
tree | 289498818e5d6c1364eabd42553f540f65e5edfa /source4/dsdb/repl | |
parent | 2c5a1e6bdde646fd51f36eb31043be0783cea0b1 (diff) | |
download | samba-7ff19c935de67089f7a807bafb1f6e206ff6c585.tar.gz samba-7ff19c935de67089f7a807bafb1f6e206ff6c585.tar.bz2 samba-7ff19c935de67089f7a807bafb1f6e206ff6c585.zip |
r20726: - only add the rdn attribute and it's meta_data when the 'name' attribute is there
- add the values for objectGUID and whenChanged inside the ldb module,
so that the ldb module has only replicated attributes as input
metze
(This used to be commit 0ecb07e0526462529fb21cec30e789a9002b30a1)
Diffstat (limited to 'source4/dsdb/repl')
-rw-r--r-- | source4/dsdb/repl/replicated_objects.c | 62 |
1 files changed, 27 insertions, 35 deletions
diff --git a/source4/dsdb/repl/replicated_objects.c b/source4/dsdb/repl/replicated_objects.c index 1e032b4c80..aa92269c46 100644 --- a/source4/dsdb/repl/replicated_objects.c +++ b/source4/dsdb/repl/replicated_objects.c @@ -44,13 +44,13 @@ static WERROR dsdb_convert_object(struct ldb_context *ldb, NTTIME whenChanged = 0; time_t whenChanged_t; const char *whenChanged_s; - const char *rdn_name; - const struct ldb_val *rdn_value; - const struct dsdb_attribute *rdn_attr; + const char *rdn_name = NULL; + const struct ldb_val *rdn_value = NULL; + const struct dsdb_attribute *rdn_attr = NULL; uint32_t rdn_attid; - struct drsuapi_DsReplicaAttribute *name_a; - struct drsuapi_DsReplicaMetaData *name_d; - struct replPropertyMetaData1 *rdn_m; + struct drsuapi_DsReplicaAttribute *name_a = NULL; + struct drsuapi_DsReplicaMetaData *name_d = NULL; + struct replPropertyMetaData1 *rdn_m = NULL; int ret; if (!in->object.identifier) { @@ -134,44 +134,36 @@ static WERROR dsdb_convert_object(struct ldb_context *ldb, } } - if (!name_d) { - return WERR_FOOBAR; - } + if (rdn_m) { + ret = ldb_msg_add_value(msg, rdn_attr->lDAPDisplayName, rdn_value, NULL); + if (ret != LDB_SUCCESS) { + return WERR_FOOBAR; + } - ret = ldb_msg_add_value(msg, rdn_attr->lDAPDisplayName, rdn_value, NULL); - if (ret != LDB_SUCCESS) { - return WERR_FOOBAR; - } + rdn_m->attid = rdn_attid; + rdn_m->version = name_d->version; + rdn_m->orginating_time = name_d->orginating_time; + rdn_m->orginating_invocation_id = name_d->orginating_invocation_id; + rdn_m->orginating_usn = name_d->orginating_usn; + rdn_m->local_usn = 0; + md->ctr.ctr1.count++; - nt_status = ndr_push_struct_blob(&guid_value, msg, &in->object.identifier->guid, - (ndr_push_flags_fn_t)ndr_push_GUID); - if (!NT_STATUS_IS_OK(nt_status)) { - return ntstatus_to_werror(nt_status); - } - ret = ldb_msg_add_value(msg, "objectGUID", &guid_value, NULL); - if (ret != LDB_SUCCESS) { - return WERR_FOOBAR; } whenChanged_t = nt_time_to_unix(whenChanged); whenChanged_s = ldb_timestring(msg, whenChanged_t); W_ERROR_HAVE_NO_MEMORY(whenChanged_s); - ret = ldb_msg_add_string(msg, "whenChanged", whenChanged_s); - if (ret != LDB_SUCCESS) { - return WERR_FOOBAR; + + nt_status = ndr_push_struct_blob(&guid_value, msg, &in->object.identifier->guid, + (ndr_push_flags_fn_t)ndr_push_GUID); + if (!NT_STATUS_IS_OK(nt_status)) { + return ntstatus_to_werror(nt_status); } - rdn_m->attid = rdn_attid; - rdn_m->version = name_d->version; - rdn_m->orginating_time = name_d->orginating_time; - rdn_m->orginating_invocation_id = name_d->orginating_invocation_id; - rdn_m->orginating_usn = name_d->orginating_usn; - rdn_m->local_usn = 0; - md->ctr.ctr1.count++; - - out->msg = msg; - out->guid_value = guid_value; - out->meta_data = md; + out->msg = msg; + out->guid_value = guid_value; + out->when_changed = whenChanged_s; + out->meta_data = md; return WERR_OK; } |