1
0
mirror of https://github.com/samba-team/samba.git synced 2025-03-05 20:58:40 +03:00

dsdb: Use DSDB_SEARCH_SHOW_EXTENDED_DN when searching for the local replicated object

This may allow further processing when the DN normalisation has changed
which changes the indexing, such as seen after fixes for bug 14656.

BUG: https://bugzilla.samba.org/show_bug.cgi?id=14656
BUG: https://bugzilla.samba.org/show_bug.cgi?id=14902

Signed-off-by: Andrew Bartlett <abartlet@samba.org>
Reviewed-by: Stefan Metzmacher <metze@samba.org>
(cherry picked from commit f621317e3b25a8925ab6e448068264488a0a47c7)
This commit is contained in:
Andrew Bartlett 2021-11-12 12:44:44 +13:00 committed by Stefan Metzmacher
parent b0d67dc3d4
commit ce1186e06e
2 changed files with 13 additions and 2 deletions

View File

@ -1404,7 +1404,7 @@ static const struct op_attributes_replace search_sub[] = {
{ "tokenGroups", "primaryGroupID", objectSid_attr, construct_token_groups },
{ "tokenGroupsNoGCAcceptable", "primaryGroupID", objectSid_attr, construct_token_groups_no_gc},
{ "tokenGroupsGlobalAndUniversal", "primaryGroupID", objectSid_attr, construct_global_universal_token_groups },
{ "parentGUID", NULL, NULL, construct_parent_guid },
{ "parentGUID", "objectGUID", NULL, construct_parent_guid },
{ "subSchemaSubEntry", NULL, NULL, construct_subschema_subentry },
{ "msDS-isRODC", "objectClass", objectCategory_attr, construct_msds_isrodc },
{ "msDS-KeyVersionNumber", "replPropertyMetaData", NULL, construct_msds_keyversionnumber },

View File

@ -6925,7 +6925,18 @@ static int replmd_replicated_apply_next(struct replmd_replicated_request *ar)
ar->req);
LDB_REQ_SET_LOCATION(search_req);
ret = dsdb_request_add_controls(search_req, DSDB_SEARCH_SHOW_RECYCLED);
/*
* We set DSDB_SEARCH_SHOW_EXTENDED_DN to get the GUID on the
* DN. This in turn helps our operational module find the
* record by GUID, not DN lookup which is more error prone if
* DN indexing changes. We prefer to keep chasing GUIDs
* around if possible, even within a transaction.
*
* The aim here is to keep replication moving and allow a
* reindex later.
*/
ret = dsdb_request_add_controls(search_req, DSDB_SEARCH_SHOW_RECYCLED
|DSDB_SEARCH_SHOW_EXTENDED_DN);
if (ret != LDB_SUCCESS) {
return ret;