Blob Blame Raw
From 4c154182cd680f458b016abf60760328d0979b63 Mon Sep 17 00:00:00 2001
From: Mark Reynolds <mreynolds@redhat.com>
Date: Wed, 13 Jul 2016 15:51:56 -0400
Subject: [PATCH 08/15] Ticket 48924 - Fixup tombstone task needs to set proper
 flag when updating tombstones

Bug Description:  The fixup tombstone task is not updating tombstones due to
                  TOMBSTONE_INCLUDE not being set when looking up the entry to
                  modify.

Fix Description:  If fixing up tombstones called find_entry2modify_only_ext with
                  the TOMBSTONE_INCLUDED flag.

https://fedorahosted.org/389/ticket/48924

Reviewed by: nhosoi(Thanks!)

(cherry picked from commit 8cfb650170bbb4f6ce328b827dc294437ee38c4b)
---
 ldap/servers/slapd/back-ldbm/ldbm_modify.c | 18 ++++++++++++++----
 1 file changed, 14 insertions(+), 4 deletions(-)

diff --git a/ldap/servers/slapd/back-ldbm/ldbm_modify.c b/ldap/servers/slapd/back-ldbm/ldbm_modify.c
index 37225cd..9b3062c 100644
--- a/ldap/servers/slapd/back-ldbm/ldbm_modify.c
+++ b/ldap/servers/slapd/back-ldbm/ldbm_modify.c
@@ -465,9 +465,14 @@ ldbm_back_modify( Slapi_PBlock *pb )
 	 */
 	if ( MANAGE_ENTRY_BEFORE_DBLOCK(li)) {
 		/* find and lock the entry we are about to modify */
-		if ( (e = find_entry2modify( pb, be, addr, &txn )) == NULL ) {
+		if (fixup_tombstone) {
+			e = find_entry2modify_only_ext( pb, be, addr, TOMBSTONE_INCLUDED, &txn );
+		} else {
+			e = find_entry2modify( pb, be, addr, &txn );
+		}
+		if (e == NULL) {
 			ldap_result_code= -1;
-			goto error_return;	  /* error result sent by find_entry2modify() */
+			goto error_return; /* error result sent by find_entry2modify() */
 		}
 	}
 
@@ -545,9 +550,14 @@ ldbm_back_modify( Slapi_PBlock *pb )
 		if (0 == retry_count) { /* just once */
 			if ( !MANAGE_ENTRY_BEFORE_DBLOCK(li)) {
 				/* find and lock the entry we are about to modify */
-				if ( (e = find_entry2modify( pb, be, addr, &txn )) == NULL ) {
+				if (fixup_tombstone) {
+					e = find_entry2modify_only_ext( pb, be, addr, TOMBSTONE_INCLUDED, &txn );
+				} else {
+					e = find_entry2modify( pb, be, addr, &txn );
+				}
+				if (e == NULL) {
 					ldap_result_code= -1;
-					goto error_return;	  /* error result sent by find_entry2modify() */
+					goto error_return; /* error result sent by find_entry2modify() */
 				}
 			}
 		
-- 
2.4.11