mirror of
https://github.com/samba-team/samba.git
synced 2025-08-29 13:49:30 +03:00
getncchanges: improve get_nc_changes_build_object() by checking uSNChanged
This will make a difference once we handle DRSUAPI_DRS_GET_ANC correctly. BUG: https://bugzilla.samba.org/show_bug.cgi?id=12398 Signed-off-by: Stefan Metzmacher <metze@samba.org> Reviewed-by: Andrew Bartlett <abartlet@samba.org>
This commit is contained in:
committed by
Andrew Bartlett
parent
51386342d5
commit
c31777a701
@ -212,6 +212,7 @@ static WERROR get_nc_changes_build_object(struct drsuapi_DsReplicaObjectListItem
|
||||
uint32_t *attids;
|
||||
const char *rdn;
|
||||
const struct dsdb_attribute *rdn_sa;
|
||||
uint64_t uSNChanged;
|
||||
unsigned int instanceType;
|
||||
struct dsdb_syntax_ctx syntax_ctx;
|
||||
|
||||
@ -219,6 +220,7 @@ static WERROR get_nc_changes_build_object(struct drsuapi_DsReplicaObjectListItem
|
||||
dsdb_syntax_ctx_init(&syntax_ctx, sam_ctx, schema);
|
||||
syntax_ctx.is_schema_nc = is_schema_nc;
|
||||
|
||||
uSNChanged = ldb_msg_find_attr_as_uint64(msg, "uSNChanged", 0);
|
||||
instanceType = ldb_msg_find_attr_as_uint(msg, "instanceType", 0);
|
||||
if (instanceType & INSTANCE_TYPE_IS_NC_HEAD) {
|
||||
obj->is_nc_prefix = true;
|
||||
@ -249,6 +251,11 @@ static WERROR get_nc_changes_build_object(struct drsuapi_DsReplicaObjectListItem
|
||||
return WERR_OK;
|
||||
}
|
||||
|
||||
if (uSNChanged <= highest_usn) {
|
||||
/* nothing to send */
|
||||
return WERR_OK;
|
||||
}
|
||||
|
||||
ndr_err = ndr_pull_struct_blob(md_value, obj, &md,
|
||||
(ndr_pull_flags_fn_t)ndr_pull_replPropertyMetaDataBlob);
|
||||
if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
|
||||
|
Reference in New Issue
Block a user