Browse Source

Revert "make memberof transaction aware and able to be a betxnpostoperation plugin"

This reverts commit 1d2f5a0c138f560f192be387b37880d7675809ef.
Reverts the SLAPI_TXN stuff but leaves the code that allows memberof to
be either a regular or a betxn plugin.
Rich Megginson 13 years ago
parent
commit
a1201df9ac
1 changed files with 96 additions and 128 deletions
  1. 96 128
      ldap/servers/plugins/memberof/memberof.c

+ 96 - 128
ldap/servers/plugins/memberof/memberof.c

@@ -92,7 +92,6 @@ typedef struct _memberof_get_groups_data
         MemberOfConfig *config;
         Slapi_Value *memberdn_val;
         Slapi_ValueSet **groupvals;
-        void *txn;
 } memberof_get_groups_data;
 
 /*** function prototypes ***/
@@ -113,55 +112,55 @@ static int memberof_postop_close(Slapi_PBlock *pb);
 static int memberof_oktodo(Slapi_PBlock *pb);
 static char *memberof_getdn(Slapi_PBlock *pb);
 static int memberof_modop_one(Slapi_PBlock *pb, MemberOfConfig *config, int mod_op,
-	char *op_this, char *op_to, void *txn);
+	char *op_this, char *op_to);
 static int memberof_modop_one_r(Slapi_PBlock *pb, MemberOfConfig *config, int mod_op,
-	char *group_dn, char *op_this, char *op_to, memberofstringll *stack, void *txn);
+	char *group_dn, char *op_this, char *op_to, memberofstringll *stack);
 static int memberof_add_one(Slapi_PBlock *pb, MemberOfConfig *config, char *addthis,
-	char *addto, void *txn);
+	char *addto);
 static int memberof_del_one(Slapi_PBlock *pb, MemberOfConfig *config, char *delthis,
-	char *delfrom, void *txn);
+	char *delfrom);
 static int memberof_mod_smod_list(Slapi_PBlock *pb, MemberOfConfig *config, int mod,
-	char *groupdn, Slapi_Mod *smod, void *txn);
+	char *groupdn, Slapi_Mod *smod);
 static int memberof_add_smod_list(Slapi_PBlock *pb, MemberOfConfig *config,
-	char *groupdn, Slapi_Mod *smod, void *txn);
+	char *groupdn, Slapi_Mod *smod);
 static int memberof_del_smod_list(Slapi_PBlock *pb, MemberOfConfig *config,
-	char *groupdn, Slapi_Mod *smod, void *txn);
+	char *groupdn, Slapi_Mod *smod);
 static int memberof_mod_attr_list(Slapi_PBlock *pb, MemberOfConfig *config, int mod,
-	char *groupdn, Slapi_Attr *attr, void *txn);
+	char *groupdn, Slapi_Attr *attr);
 static int memberof_mod_attr_list_r(Slapi_PBlock *pb, MemberOfConfig *config,
-	int mod, char *group_dn, char *op_this, Slapi_Attr *attr, memberofstringll *stack, void *txn);
+	int mod, char *group_dn, char *op_this, Slapi_Attr *attr, memberofstringll *stack);
 static int memberof_add_attr_list(Slapi_PBlock *pb, MemberOfConfig *config,
-	char *groupdn, Slapi_Attr *attr, void *txn);
+	char *groupdn, Slapi_Attr *attr);
 static int memberof_del_attr_list(Slapi_PBlock *pb, MemberOfConfig *config,
-	char *groupdn, Slapi_Attr *attr, void *txn);
+	char *groupdn, Slapi_Attr *attr);
 static int memberof_moddn_attr_list(Slapi_PBlock *pb, MemberOfConfig *config,
-	char *pre_dn, char *post_dn, Slapi_Attr *attr, void *txn);
-static int memberof_replace_list(Slapi_PBlock *pb, MemberOfConfig *config, char *group_dn, void *txn);
+	char *pre_dn, char *post_dn, Slapi_Attr *attr);
+static int memberof_replace_list(Slapi_PBlock *pb, MemberOfConfig *config, char *group_dn);
 static void memberof_set_plugin_id(void * plugin_id);
 static void *memberof_get_plugin_id();
 static int memberof_compare(MemberOfConfig *config, const void *a, const void *b);
 static int memberof_qsort_compare(const void *a, const void *b);
 static void memberof_load_array(Slapi_Value **array, Slapi_Attr *attr);
-static void memberof_del_dn_from_groups(Slapi_PBlock *pb, MemberOfConfig *config, char *dn, void *txn);
+static void memberof_del_dn_from_groups(Slapi_PBlock *pb, MemberOfConfig *config, char *dn);
 static int memberof_call_foreach_dn(Slapi_PBlock *pb, char *dn,
-	char **types, plugin_search_entry_callback callback,  void *callback_data, void *txn);
+	char **types, plugin_search_entry_callback callback,  void *callback_data);
 static int memberof_is_direct_member(MemberOfConfig *config, Slapi_Value *groupdn,
-	Slapi_Value *memberdn, void *txn);
+	Slapi_Value *memberdn);
 static int memberof_is_grouping_attr(char *type, MemberOfConfig *config);
-static Slapi_ValueSet *memberof_get_groups(MemberOfConfig *config, char *memberdn, void *txn);
+static Slapi_ValueSet *memberof_get_groups(MemberOfConfig *config, char *memberdn);
 static int memberof_get_groups_r(MemberOfConfig *config, char *memberdn,
-	memberof_get_groups_data *data, void *txn);
+	memberof_get_groups_data *data);
 static int memberof_get_groups_callback(Slapi_Entry *e, void *callback_data);
 static int memberof_test_membership(Slapi_PBlock *pb, MemberOfConfig *config,
-	char *group_dn, void *txn);
+	char *group_dn);
 static int memberof_test_membership_callback(Slapi_Entry *e, void *callback_data);
 static int memberof_del_dn_type_callback(Slapi_Entry *e, void *callback_data);
 static int memberof_replace_dn_type_callback(Slapi_Entry *e, void *callback_data);
 static void memberof_replace_dn_from_groups(Slapi_PBlock *pb, MemberOfConfig *config,
-	char *pre_dn, char *post_dn, void *txn);
+	char *pre_dn, char *post_dn);
 static int memberof_modop_one_replace_r(Slapi_PBlock *pb, MemberOfConfig *config,
 	int mod_op, char *group_dn, char *op_this, char *replace_with, char *op_to,
-	memberofstringll *stack, void *txn);
+	memberofstringll *stack);
 static int memberof_task_add(Slapi_PBlock *pb, Slapi_Entry *e,
                     Slapi_Entry *eAfter, int *returncode, char *returntext,
                     void *arg);
@@ -169,7 +168,7 @@ static void memberof_task_destructor(Slapi_Task *task);
 static const char *fetch_attr(Slapi_Entry *e, const char *attrname,
                                               const char *default_val);
 static void memberof_fixup_task_thread(void *arg);
-static int memberof_fix_memberof(MemberOfConfig *config, char *dn, char *filter_str, void *txn);
+static int memberof_fix_memberof(MemberOfConfig *config, char *dn, char *filter_str);
 static int memberof_fix_memberof_callback(Slapi_Entry *e, void *callback_data);
 
 
@@ -399,10 +398,8 @@ int memberof_postop_del(Slapi_PBlock *pb)
 	if(memberof_oktodo(pb) && (normdn = memberof_getdn(pb)))
 	{
 		struct slapi_entry *e = NULL;
-		void *txn = NULL;
 
 		slapi_pblock_get( pb, SLAPI_ENTRY_PRE_OP, &e );
-		slapi_pblock_get( pb, SLAPI_TXN, &txn );
 
 		/* We need to get the config lock first.  Trying to get the
 		 * config lock after we already hold the op lock can cause
@@ -418,7 +415,7 @@ int memberof_postop_del(Slapi_PBlock *pb)
 		/* remove this DN from the
 		 * membership lists of groups
 		 */
-		memberof_del_dn_from_groups(pb, &configCopy, normdn, txn);
+		memberof_del_dn_from_groups(pb, &configCopy, normdn);
 
 		/* is the entry of interest as a group? */
 		if(e && configCopy.group_filter && !slapi_filter_test_simple(e, configCopy.group_filter))
@@ -431,7 +428,7 @@ int memberof_postop_del(Slapi_PBlock *pb)
 			{
 				if (0 == slapi_entry_attr_find(e, configCopy.groupattrs[i], &attr))
 				{
-					memberof_del_attr_list(pb, &configCopy, normdn, attr, txn);
+					memberof_del_attr_list(pb, &configCopy, normdn, attr);
 				}
 			}
 		}
@@ -450,12 +447,11 @@ typedef struct _memberof_del_dn_data
 {
 	char *dn;
 	char *type;
-	void *txn;
 } memberof_del_dn_data;
 
 /* Deletes a member dn from all groups that refer to it. */
 static void
-memberof_del_dn_from_groups(Slapi_PBlock *pb, MemberOfConfig *config, char *dn, void *txn)
+memberof_del_dn_from_groups(Slapi_PBlock *pb, MemberOfConfig *config, char *dn)
 {
 	int i = 0;
 	char *groupattrs[2] = {0, 0};
@@ -465,12 +461,12 @@ memberof_del_dn_from_groups(Slapi_PBlock *pb, MemberOfConfig *config, char *dn,
 	 * same grouping attribute. */
 	for (i = 0; config->groupattrs[i]; i++)
 	{
-		memberof_del_dn_data data = {dn, config->groupattrs[i], txn};
+		memberof_del_dn_data data = {dn, config->groupattrs[i]};
 
 		groupattrs[0] = config->groupattrs[i];
 
 		memberof_call_foreach_dn(pb, dn, groupattrs,
-			memberof_del_dn_type_callback, &data, txn);
+			memberof_del_dn_type_callback, &data);
 	}
 }
 
@@ -499,7 +495,6 @@ int memberof_del_dn_type_callback(Slapi_Entry *e, void *callback_data)
 		mods, 0, 0,
 		memberof_get_plugin_id(), 0);
 
-	slapi_pblock_set(mod_pb, SLAPI_TXN, ((memberof_del_dn_data *)callback_data)->txn);
 	slapi_modify_internal_pb(mod_pb);
 
 	slapi_pblock_get(mod_pb,
@@ -518,7 +513,7 @@ int memberof_del_dn_type_callback(Slapi_Entry *e, void *callback_data)
  * case.
  */
 int memberof_call_foreach_dn(Slapi_PBlock *pb, char *dn,
-	char **types, plugin_search_entry_callback callback, void *callback_data, void *txn)
+	char **types, plugin_search_entry_callback callback, void *callback_data)
 {
 	int rc = 0;
 	Slapi_PBlock *search_pb = slapi_pblock_new();
@@ -531,7 +526,6 @@ int memberof_call_foreach_dn(Slapi_PBlock *pb, char *dn,
 	int dn_len = 0;
 	int i = 0;
 
-	slapi_pblock_set(search_pb, SLAPI_TXN, txn);
 	/* get the base dn for the backend we are in
 	   (we don't support having members and groups in
            different backends - issues with offline / read only backends)
@@ -634,11 +628,9 @@ int memberof_postop_modrdn(Slapi_PBlock *pb)
 		struct slapi_entry *post_e = NULL;
 		char *pre_dn = 0;
 		char *post_dn = 0;
-		void *txn = NULL;
 
 		slapi_pblock_get( pb, SLAPI_ENTRY_PRE_OP, &pre_e );
 		slapi_pblock_get( pb, SLAPI_ENTRY_POST_OP, &post_e );
-		slapi_pblock_get( pb, SLAPI_TXN, &txn );
 		
 		if(pre_e && post_e)
 		{
@@ -667,7 +659,7 @@ int memberof_postop_modrdn(Slapi_PBlock *pb)
 			{
 				if(0 == slapi_entry_attr_find(post_e, configCopy.groupattrs[i], &attr))
 				{
-					if(memberof_moddn_attr_list(pb, &configCopy, pre_dn, post_dn, attr, txn) != 0){
+					if(memberof_moddn_attr_list(pb, &configCopy, pre_dn, post_dn, attr) != 0){
 						break;
 					}
 				}
@@ -678,7 +670,7 @@ int memberof_postop_modrdn(Slapi_PBlock *pb)
 		 * of other group entries.  We need to update any member
 		 * attributes to refer to the new name. */
 		if (pre_dn && post_dn) {
-			memberof_replace_dn_from_groups(pb, &configCopy, pre_dn, post_dn, txn);
+			memberof_replace_dn_from_groups(pb, &configCopy, pre_dn, post_dn);
 		}
 
 		memberof_unlock();
@@ -696,7 +688,6 @@ typedef struct _replace_dn_data
 	char *pre_dn;
 	char *post_dn;
 	char *type;
-	void *txn;
 } replace_dn_data;
 
 
@@ -704,7 +695,7 @@ typedef struct _replace_dn_data
  * to use post_dn instead. */
 static void
 memberof_replace_dn_from_groups(Slapi_PBlock *pb, MemberOfConfig *config,
-	char *pre_dn, char *post_dn, void *txn)
+	char *pre_dn, char *post_dn)
 {
 	int i = 0;
 	char *groupattrs[2] = {0, 0};
@@ -714,12 +705,12 @@ memberof_replace_dn_from_groups(Slapi_PBlock *pb, MemberOfConfig *config,
 	 * using the same grouping attribute. */
 	for (i = 0; config->groupattrs[i]; i++)
 	{
-		replace_dn_data data = {pre_dn, post_dn, config->groupattrs[i], txn};
+		replace_dn_data data = {pre_dn, post_dn, config->groupattrs[i]};
 
 		groupattrs[0] = config->groupattrs[i];
 
 		memberof_call_foreach_dn(pb, pre_dn, groupattrs, 
-			memberof_replace_dn_type_callback, &data, txn);
+			memberof_replace_dn_type_callback, &data);
 	}
 }
 
@@ -759,7 +750,6 @@ int memberof_replace_dn_type_callback(Slapi_Entry *e, void *callback_data)
 		mods, 0, 0,
 		memberof_get_plugin_id(), 0);
 
-	slapi_pblock_set(mod_pb, SLAPI_TXN, ((replace_dn_data *)callback_data)->txn);
 	slapi_modify_internal_pb(mod_pb);
 
 	slapi_pblock_get(mod_pb,
@@ -812,9 +802,7 @@ int memberof_postop_modify(Slapi_PBlock *pb)
 		int config_copied = 0;
 		MemberOfConfig *mainConfig = 0;
 		MemberOfConfig configCopy = {0, 0, 0, 0};
-		void *txn = NULL;
 
-		slapi_pblock_get(pb, SLAPI_TXN, &txn);
 		/* get the mod set */
 		slapi_pblock_get(pb, SLAPI_MODIFY_MODS, &mods);
 		smods = slapi_mods_new();
@@ -865,7 +853,7 @@ int memberof_postop_modify(Slapi_PBlock *pb)
 				case LDAP_MOD_ADD:
 					{
 						/* add group DN to targets */
-						memberof_add_smod_list(pb, &configCopy, normdn, smod, txn);
+						memberof_add_smod_list(pb, &configCopy, normdn, smod);
 						break;
 					}
 				
@@ -877,12 +865,12 @@ int memberof_postop_modify(Slapi_PBlock *pb)
 						 * entry, which the replace code deals with. */
 						if (slapi_mod_get_num_values(smod) == 0)
 						{
-							memberof_replace_list(pb, &configCopy, normdn, txn);
+							memberof_replace_list(pb, &configCopy, normdn);
 						}
 						else
 						{
 							/* remove group DN from target values in smod*/
-							memberof_del_smod_list(pb, &configCopy, normdn, smod, txn);
+							memberof_del_smod_list(pb, &configCopy, normdn, smod);
 						}
 						break;
 					}
@@ -890,7 +878,7 @@ int memberof_postop_modify(Slapi_PBlock *pb)
 				case LDAP_MOD_REPLACE:
 					{
 						/* replace current values */
-						memberof_replace_list(pb, &configCopy, normdn, txn);
+						memberof_replace_list(pb, &configCopy, normdn);
 						break;
 					}
 
@@ -955,10 +943,9 @@ int memberof_postop_add(Slapi_PBlock *pb)
 		MemberOfConfig *mainConfig = 0;
 		MemberOfConfig configCopy = {0, 0, 0, 0};
 		struct slapi_entry *e = NULL;
-		void *txn = NULL;
 
 		slapi_pblock_get( pb, SLAPI_ENTRY_POST_OP, &e );
-		slapi_pblock_get( pb, SLAPI_TXN, &txn );
+		
 
 		/* is the entry of interest? */
 		memberof_rlock_config();
@@ -983,7 +970,7 @@ int memberof_postop_add(Slapi_PBlock *pb)
 			{
 				if(0 == slapi_entry_attr_find(e, configCopy.groupattrs[i], &attr))
 				{
-					memberof_add_attr_list(pb, &configCopy, normdn, attr, txn);
+					memberof_add_attr_list(pb, &configCopy, normdn, attr);
 				}
 			}
 
@@ -1073,9 +1060,9 @@ char *memberof_getdn(Slapi_PBlock *pb)
  * Also, we must not delete entries that are a member of the group
  */
 int memberof_modop_one(Slapi_PBlock *pb, MemberOfConfig *config, int mod_op,
-	char *op_this, char *op_to, void *txn)
+	char *op_this, char *op_to)
 {
-	return memberof_modop_one_r(pb, config, mod_op, op_this, op_this, op_to, 0, txn);
+	return memberof_modop_one_r(pb, config, mod_op, op_this, op_this, op_to, 0);
 }
 
 /* memberof_modop_one_r()
@@ -1084,24 +1071,19 @@ int memberof_modop_one(Slapi_PBlock *pb, MemberOfConfig *config, int mod_op,
  */
 
 int memberof_modop_one_r(Slapi_PBlock *pb, MemberOfConfig *config, int mod_op,
-	char *group_dn, char *op_this, char *op_to, memberofstringll *stack, void *txn)
+	char *group_dn, char *op_this, char *op_to, memberofstringll *stack)
 {
 	return memberof_modop_one_replace_r(
-		pb, config, mod_op, group_dn, op_this, 0, op_to, stack, txn);
+		pb, config, mod_op, group_dn, op_this, 0, op_to, stack);
 }
 
-struct fix_memberof_callback_data {
-	MemberOfConfig *config;
-	void *txn;
-};
-
 /* memberof_modop_one_replace_r()
  *
  * recursive function to perform above (with added replace arg)
  */
 int memberof_modop_one_replace_r(Slapi_PBlock *pb, MemberOfConfig *config,
 	int mod_op, char *group_dn, char *op_this, char *replace_with,
-	char *op_to, memberofstringll *stack, void *txn)
+	char *op_to, memberofstringll *stack)
 {
 	int rc = 0;
 	LDAPMod mod;
@@ -1125,8 +1107,8 @@ int memberof_modop_one_replace_r(Slapi_PBlock *pb, MemberOfConfig *config,
 
 	/* determine if this is a group op or single entry */
 	op_to_sdn = slapi_sdn_new_normdn_byref(op_to);
-	slapi_search_internal_get_entry_ext( op_to_sdn, config->groupattrs,
-		&e, memberof_get_plugin_id(), txn);
+	slapi_search_internal_get_entry( op_to_sdn, config->groupattrs,
+		&e, memberof_get_plugin_id());
 	if(!e)
 	{
 		/* In the case of a delete, we need to worry about the
@@ -1165,7 +1147,6 @@ int memberof_modop_one_replace_r(Slapi_PBlock *pb, MemberOfConfig *config,
 				slapi_search_internal_set_pb(search_pb, slapi_sdn_get_dn(base_sdn),
 					LDAP_SCOPE_SUBTREE, filter_str, 0, 0, 0, 0,
 					memberof_get_plugin_id(), 0);
-				slapi_pblock_set(search_pb, SLAPI_TXN, txn);
 
 				if (slapi_search_internal_pb(search_pb))
 				{
@@ -1185,7 +1166,7 @@ int memberof_modop_one_replace_r(Slapi_PBlock *pb, MemberOfConfig *config,
 						 * entry.  This will fix the references to
 						 * the missing group as well as the group
 						 * represented by op_this. */
-						memberof_test_membership(pb, config, op_to, txn);
+						memberof_test_membership(pb, config, op_to);
 					}
 				}
 
@@ -1268,7 +1249,7 @@ int memberof_modop_one_replace_r(Slapi_PBlock *pb, MemberOfConfig *config,
 			slapi_entry_attr_find( e, config->groupattrs[i], &members );
 			if(members)
 			{
-				if(memberof_mod_attr_list_r(pb, config, mod_op, group_dn, op_this, members, ll, txn) != 0){
+				if(memberof_mod_attr_list_r(pb, config, mod_op, group_dn, op_this, members, ll) != 0){
 					rc = -1;
 					goto bail;
 				}
@@ -1309,8 +1290,7 @@ int memberof_modop_one_replace_r(Slapi_PBlock *pb, MemberOfConfig *config,
 		if(LDAP_MOD_DELETE == mod_op || LDAP_MOD_ADD == mod_op)
 		{
 			/* find parent groups and replace our member attr */
-			struct fix_memberof_callback_data cb_data = {config, txn};
-			memberof_fix_memberof_callback(e, &cb_data);
+			memberof_fix_memberof_callback(e, config);
 		} else {
 			/* single entry - do mod */
 			mod_pb = slapi_pblock_new();
@@ -1347,7 +1327,6 @@ int memberof_modop_one_replace_r(Slapi_PBlock *pb, MemberOfConfig *config,
 				mods, 0, 0,
 				memberof_get_plugin_id(), 0);
 
-			slapi_pblock_set(mod_pb, SLAPI_TXN, txn);
 			slapi_modify_internal_pb(mod_pb);
 
 			slapi_pblock_get(mod_pb,
@@ -1373,9 +1352,9 @@ bail:
  * Add addthis DN to the memberof attribute of addto
  *
  */
-int memberof_add_one(Slapi_PBlock *pb, MemberOfConfig *config, char *addthis, char *addto, void *txn)
+int memberof_add_one(Slapi_PBlock *pb, MemberOfConfig *config, char *addthis, char *addto)
 {
-	return memberof_modop_one(pb, config, LDAP_MOD_ADD, addthis, addto, txn);
+	return memberof_modop_one(pb, config, LDAP_MOD_ADD, addthis, addto);
 }
 
 /*
@@ -1384,9 +1363,9 @@ int memberof_add_one(Slapi_PBlock *pb, MemberOfConfig *config, char *addthis, ch
  * Delete delthis DN from the memberof attribute of delfrom
  *
  */
-int memberof_del_one(Slapi_PBlock *pb, MemberOfConfig *config, char *delthis, char *delfrom, void *txn)
+int memberof_del_one(Slapi_PBlock *pb, MemberOfConfig *config, char *delthis, char *delfrom)
 {
-	return memberof_modop_one(pb, config, LDAP_MOD_DELETE, delthis, delfrom, txn);
+	return memberof_modop_one(pb, config, LDAP_MOD_DELETE, delthis, delfrom);
 }
 
 /*
@@ -1396,7 +1375,7 @@ int memberof_del_one(Slapi_PBlock *pb, MemberOfConfig *config, char *delthis, ch
  *
  */
 int memberof_mod_smod_list(Slapi_PBlock *pb, MemberOfConfig *config, int mod,
-	char *group_dn, Slapi_Mod *smod, void *txn)
+	char *group_dn, Slapi_Mod *smod)
 {
 	int rc = 0;
 	struct berval *bv = slapi_mod_get_first_value(smod);
@@ -1428,7 +1407,7 @@ int memberof_mod_smod_list(Slapi_PBlock *pb, MemberOfConfig *config, int mod,
 
 		strncpy(dn_str, bv->bv_val, (size_t)bv->bv_len);
 
-		memberof_modop_one(pb, config, mod, group_dn, dn_str, txn);
+		memberof_modop_one(pb, config, mod, group_dn, dn_str);
 
 		bv = slapi_mod_get_next_value(smod);
 	}
@@ -1446,9 +1425,9 @@ int memberof_mod_smod_list(Slapi_PBlock *pb, MemberOfConfig *config, int mod,
  *
  */
 int memberof_add_smod_list(Slapi_PBlock *pb, MemberOfConfig *config,
-	char *groupdn, Slapi_Mod *smod, void *txn)
+	char *groupdn, Slapi_Mod *smod)
 {
-	return memberof_mod_smod_list(pb, config, LDAP_MOD_ADD, groupdn, smod, txn);
+	return memberof_mod_smod_list(pb, config, LDAP_MOD_ADD, groupdn, smod);
 }
 
 
@@ -1459,9 +1438,9 @@ int memberof_add_smod_list(Slapi_PBlock *pb, MemberOfConfig *config,
  *
  */
 int memberof_del_smod_list(Slapi_PBlock *pb, MemberOfConfig *config,
-	char *groupdn, Slapi_Mod *smod, void *txn)
+	char *groupdn, Slapi_Mod *smod)
 {
-	return memberof_mod_smod_list(pb, config, LDAP_MOD_DELETE, groupdn, smod, txn);
+	return memberof_mod_smod_list(pb, config, LDAP_MOD_DELETE, groupdn, smod);
 }
 
 /**
@@ -1485,13 +1464,13 @@ void * memberof_get_plugin_id()
  *
  */
 int memberof_mod_attr_list(Slapi_PBlock *pb, MemberOfConfig *config, int mod,
-	char *group_dn, Slapi_Attr *attr, void *txn)
+	char *group_dn, Slapi_Attr *attr)
 {
-	return memberof_mod_attr_list_r(pb, config, mod, group_dn, group_dn, attr, 0, txn);
+	return memberof_mod_attr_list_r(pb, config, mod, group_dn, group_dn, attr, 0);
 }
 
 int memberof_mod_attr_list_r(Slapi_PBlock *pb, MemberOfConfig *config, int mod,
-	char *group_dn, char *op_this, Slapi_Attr *attr, memberofstringll *stack, void *txn)
+	char *group_dn, char *op_this, Slapi_Attr *attr, memberofstringll *stack)
 {
 	int rc = 0;
 	Slapi_Value *val = 0;
@@ -1538,11 +1517,11 @@ int memberof_mod_attr_list_r(Slapi_PBlock *pb, MemberOfConfig *config, int mod,
 			if(mod == LDAP_MOD_REPLACE)
 			{
 				memberof_modop_one_replace_r(pb, config, mod, group_dn, op_this,
-						group_dn, dn_str, stack, txn);
+						group_dn, dn_str, stack);
 			}
 			else
 			{
-				memberof_modop_one_r(pb, config, mod, group_dn, op_this, dn_str, stack, txn);
+				memberof_modop_one_r(pb, config, mod, group_dn, op_this, dn_str, stack);
 			}
 		}
 
@@ -1564,9 +1543,9 @@ int memberof_mod_attr_list_r(Slapi_PBlock *pb, MemberOfConfig *config, int mod,
  *
  */
 int memberof_add_attr_list(Slapi_PBlock *pb, MemberOfConfig *config, char *groupdn,
-	Slapi_Attr *attr, void *txn)
+	Slapi_Attr *attr)
 {
-	return memberof_mod_attr_list(pb, config, LDAP_MOD_ADD, groupdn, attr, txn);
+	return memberof_mod_attr_list(pb, config, LDAP_MOD_ADD, groupdn, attr);
 }
 
 /*
@@ -1576,9 +1555,9 @@ int memberof_add_attr_list(Slapi_PBlock *pb, MemberOfConfig *config, char *group
  *
  */
 int memberof_del_attr_list(Slapi_PBlock *pb, MemberOfConfig *config, char *groupdn,
-	Slapi_Attr *attr, void *txn)
+	Slapi_Attr *attr)
 {
-	return memberof_mod_attr_list(pb, config, LDAP_MOD_DELETE, groupdn, attr, txn);
+	return memberof_mod_attr_list(pb, config, LDAP_MOD_DELETE, groupdn, attr);
 }
 
 /*
@@ -1588,7 +1567,7 @@ int memberof_del_attr_list(Slapi_PBlock *pb, MemberOfConfig *config, char *group
  *
  */
 int memberof_moddn_attr_list(Slapi_PBlock *pb, MemberOfConfig *config,
-	char *pre_dn, char *post_dn, Slapi_Attr *attr, void *txn)
+	char *pre_dn, char *post_dn, Slapi_Attr *attr)
 {
 	int rc = 0;
 	Slapi_Value *val = 0;
@@ -1623,7 +1602,7 @@ int memberof_moddn_attr_list(Slapi_PBlock *pb, MemberOfConfig *config,
 		strncpy(dn_str, bv->bv_val, (size_t)bv->bv_len);
 
 		memberof_modop_one_replace_r(pb, config, LDAP_MOD_REPLACE,
-			post_dn, pre_dn, post_dn, dn_str, 0, txn);
+			post_dn, pre_dn, post_dn, dn_str, 0);
 
 		hint = slapi_attr_next_value(attr, hint, &val);
 	}
@@ -1641,25 +1620,25 @@ int memberof_moddn_attr_list(Slapi_PBlock *pb, MemberOfConfig *config,
  * A Slapi_ValueSet* is returned.  It is up to the caller to
  * free it.
  */
-Slapi_ValueSet *memberof_get_groups(MemberOfConfig *config, char *memberdn, void *txn)
+Slapi_ValueSet *memberof_get_groups(MemberOfConfig *config, char *memberdn)
 {
 	Slapi_Value *memberdn_val = slapi_value_new_string(memberdn);
 	Slapi_ValueSet *groupvals = slapi_valueset_new();
-	memberof_get_groups_data data = {config, memberdn_val, &groupvals, txn};
+	memberof_get_groups_data data = {config, memberdn_val, &groupvals};
 
-	memberof_get_groups_r(config, memberdn, &data, txn);
+	memberof_get_groups_r(config, memberdn, &data);
 
 	slapi_value_free(&memberdn_val);
 
 	return groupvals;
 }
 
-int memberof_get_groups_r(MemberOfConfig *config, char *memberdn, memberof_get_groups_data *data, void *txn)
+int memberof_get_groups_r(MemberOfConfig *config, char *memberdn, memberof_get_groups_data *data)
 {
 	/* Search for any grouping attributes that point to memberdn.
 	 * For each match, add it to the list, recurse and do same search */
 	return memberof_call_foreach_dn(NULL, memberdn, config->groupattrs,
-		memberof_get_groups_callback, data, txn);
+		memberof_get_groups_callback, data);
 }
 
 /* memberof_get_groups_callback()
@@ -1728,7 +1707,7 @@ int memberof_get_groups_callback(Slapi_Entry *e, void *callback_data)
 
 	/* now recurse to find parent groups of e */
 	memberof_get_groups_r(((memberof_get_groups_data*)callback_data)->config,
-		group_dn, callback_data, ((memberof_get_groups_data*)callback_data)->txn);
+		group_dn, callback_data);
 
 bail:
 	return rc;
@@ -1740,7 +1719,7 @@ bail:
  * returns non-zero when true, zero otherwise
  */
 int memberof_is_direct_member(MemberOfConfig *config, Slapi_Value *groupdn,
-	Slapi_Value *memberdn, void *txn)
+	Slapi_Value *memberdn)
 {
 	int rc = 0;
 	Slapi_DN *sdn = 0;
@@ -1750,8 +1729,8 @@ int memberof_is_direct_member(MemberOfConfig *config, Slapi_Value *groupdn,
 
 	sdn = slapi_sdn_new_normdn_byref(slapi_value_get_string(groupdn));
 
-	slapi_search_internal_get_entry_ext(sdn, config->groupattrs,
-		&group_e, memberof_get_plugin_id(), txn);
+	slapi_search_internal_get_entry(sdn, config->groupattrs,
+		&group_e, memberof_get_plugin_id());
 
 	if(group_e)
 	{
@@ -1798,11 +1777,6 @@ static int memberof_is_grouping_attr(char *type, MemberOfConfig *config)
 	return match;
 }
 
-struct test_membership_cb_data {
-	MemberOfConfig *config;
-	void *txn;
-};
-
 /* memberof_test_membership()
  *
  * Finds all entries who are a "memberOf" the group
@@ -1818,13 +1792,12 @@ struct test_membership_cb_data {
  * iterate until a pass fails to move a group over to member groups
  * remaining groups should be deleted 
  */
-int memberof_test_membership(Slapi_PBlock *pb, MemberOfConfig *config, char *group_dn, void *txn)
+int memberof_test_membership(Slapi_PBlock *pb, MemberOfConfig *config, char *group_dn)
 {
 	char *attrs[2] = {config->memberof_attr, 0};
-	struct test_membership_cb_data cb_data = {config, txn};
 
 	return memberof_call_foreach_dn(pb, group_dn, attrs, 
-		memberof_test_membership_callback , &cb_data, txn);
+		memberof_test_membership_callback , config);
 }
 
 /*
@@ -1842,8 +1815,7 @@ int memberof_test_membership_callback(Slapi_Entry *e, void *callback_data)
 	Slapi_Value **member_array = 0;
 	Slapi_Value **candidate_array = 0;
 	Slapi_Value *entry_dn = 0;
-	struct test_membership_cb_data *cb_data = (struct test_membership_cb_data *)callback_data;
-	MemberOfConfig *config = cb_data->config;
+	MemberOfConfig *config = (MemberOfConfig *)callback_data;
 
 	entry_dn = slapi_value_new_string(slapi_entry_get_dn(e));
 
@@ -1880,7 +1852,7 @@ int memberof_test_membership_callback(Slapi_Entry *e, void *callback_data)
 			while(val)
 			{
 				/* test for direct membership */
-				if(memberof_is_direct_member(config, val, entry_dn, cb_data->txn))
+				if(memberof_is_direct_member(config, val, entry_dn))
 				{
 					/* it is a member */
 					member_array[m_index] = val;
@@ -1929,7 +1901,7 @@ int memberof_test_membership_callback(Slapi_Entry *e, void *callback_data)
 						if(memberof_is_direct_member(
 							config,
 							candidate_array[inner_index],
-							member_array[outer_index], cb_data->txn))
+							member_array[outer_index]))
 						{
 							member_array[m_index] =
 								candidate_array
@@ -1969,7 +1941,7 @@ int memberof_test_membership_callback(Slapi_Entry *e, void *callback_data)
 					0, config,
 					(char*)slapi_value_get_string(
 						candidate_array[outer_index]),
-					(char*)slapi_value_get_string(entry_dn), cb_data->txn);
+					(char*)slapi_value_get_string(entry_dn));
 
 				outer_index++;
 			}
@@ -2001,7 +1973,7 @@ bail:
  * Perform replace the group DN list in the memberof attribute of the list of targets
  *
  */
-int memberof_replace_list(Slapi_PBlock *pb, MemberOfConfig *config, char *group_dn, void *txn)
+int memberof_replace_list(Slapi_PBlock *pb, MemberOfConfig *config, char *group_dn)
 {
 	struct slapi_entry *pre_e = NULL;
 	struct slapi_entry *post_e = NULL;
@@ -2091,7 +2063,7 @@ int memberof_replace_list(Slapi_PBlock *pb, MemberOfConfig *config, char *group_
 						pb, config, 
 						group_dn, 
 						(char*)slapi_value_get_string(
-							post_array[post_index]), txn);
+							post_array[post_index]));
 
 					post_index++;
 				}
@@ -2102,7 +2074,7 @@ int memberof_replace_list(Slapi_PBlock *pb, MemberOfConfig *config, char *group_
 						pb, config,
 						group_dn, 
 						(char*)slapi_value_get_string(
-							pre_array[pre_index]), txn);
+							pre_array[pre_index]));
 
 					pre_index++;
 				}
@@ -2121,7 +2093,7 @@ int memberof_replace_list(Slapi_PBlock *pb, MemberOfConfig *config, char *group_
 							pb, config, 
 							group_dn, 
 							(char*)slapi_value_get_string(
-								pre_array[pre_index]), txn);
+								pre_array[pre_index]));
 
 						pre_index++;
 					}
@@ -2132,7 +2104,7 @@ int memberof_replace_list(Slapi_PBlock *pb, MemberOfConfig *config, char *group_
 							pb, config,
 							group_dn, 
 							(char*)slapi_value_get_string(
-								post_array[post_index]), txn);
+								post_array[post_index]));
 
 						post_index++;
 					}
@@ -2252,7 +2224,7 @@ void memberof_fixup_task_thread(void *arg)
 	memberof_lock();
 
 	/* do real work */
-	rc = memberof_fix_memberof(&configCopy, td->dn, td->filter_str, NULL /* no txn? */);
+	rc = memberof_fix_memberof(&configCopy, td->dn, td->filter_str);
  
 	/* release the memberOf operation lock */
 	memberof_unlock();
@@ -2372,10 +2344,9 @@ memberof_task_destructor(Slapi_Task *task)
 	}
 }
 
-int memberof_fix_memberof(MemberOfConfig *config, char *dn, char *filter_str, void *txn)
+int memberof_fix_memberof(MemberOfConfig *config, char *dn, char *filter_str)
 {
 	int rc = 0;
-	struct fix_memberof_callback_data cb_data = {config, txn};
 	Slapi_PBlock *search_pb = slapi_pblock_new();
 
 	slapi_search_internal_set_pb(search_pb, dn,
@@ -2384,9 +2355,8 @@ int memberof_fix_memberof(MemberOfConfig *config, char *dn, char *filter_str, vo
 		memberof_get_plugin_id(),
 		0);	
 
-	slapi_pblock_set(search_pb, SLAPI_TXN, txn);
 	rc = slapi_search_internal_callback_pb(search_pb,
-		&cb_data,
+		config,
 		0, memberof_fix_memberof_callback,
 		0);
 
@@ -2407,13 +2377,12 @@ int memberof_fix_memberof_callback(Slapi_Entry *e, void *callback_data)
 	int rc = 0;
 	char *dn = slapi_entry_get_dn(e);
 	Slapi_DN *sdn = slapi_entry_get_sdn(e);
-	struct fix_memberof_callback_data *cb_data = (struct fix_memberof_callback_data *)callback_data;
-	MemberOfConfig *config = cb_data->config;
-	memberof_del_dn_data del_data = {0, config->memberof_attr, cb_data->txn};
+	MemberOfConfig *config = (MemberOfConfig *)callback_data;
+	memberof_del_dn_data del_data = {0, config->memberof_attr};
 	Slapi_ValueSet *groups = 0;
 
 	/* get a list of all of the groups this user belongs to */
-	groups = memberof_get_groups(config, dn, cb_data->txn);
+	groups = memberof_get_groups(config, dn);
 
 	/* If we found some groups, replace the existing memberOf attribute
 	 * with the found values.  */
@@ -2446,7 +2415,6 @@ int memberof_fix_memberof_callback(Slapi_Entry *e, void *callback_data)
 			mod_pb, sdn, mods, 0, 0,
 			memberof_get_plugin_id(), 0);
 
-		slapi_pblock_set(mod_pb, SLAPI_TXN, cb_data->txn);
 		slapi_modify_internal_pb(mod_pb);
 
 		slapi_pblock_get(mod_pb, SLAPI_PLUGIN_INTOP_RESULT, &rc);