From a1201df9ac1a5481efa4f07e55c1da2b3a650e6d Mon Sep 17 00:00:00 2001 From: Rich Megginson Date: Feb 17 2012 03:07:10 +0000 Subject: 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. --- diff --git a/ldap/servers/plugins/memberof/memberof.c b/ldap/servers/plugins/memberof/memberof.c index 5100b1a..56e34d4 100644 --- a/ldap/servers/plugins/memberof/memberof.c +++ b/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);