goto done;
op->o_bd->bd_info = (BackendInfo *)on;
- ldap_pvt_thread_mutex_lock( &agi->agi_mutex );
- if ( aa->agd ) {
- autogroup_add_group( op, agi, aa->agd, aa->e, NULL, 1 , 0);
- } else {
+ if ( !aa->agd ) {
autogroup_entry_t *age;
autogroup_filter_t *agf;
struct berval odn, ondn;
op->o_dn = op->o_bd->be_rootdn;
op->o_ndn = op->o_bd->be_rootndn;
+ ldap_pvt_thread_mutex_lock( &agi->agi_mutex );
for ( age = agi->agi_entry; age ; age = age->age_next ) {
ldap_pvt_thread_mutex_lock( &age->age_mutex );
}
ldap_pvt_thread_mutex_unlock( &age->age_mutex );
}
+ ldap_pvt_thread_mutex_unlock( &agi->agi_mutex );
op->o_dn = odn;
op->o_ndn = ondn;
}
- ldap_pvt_thread_mutex_unlock( &agi->agi_mutex );
op->o_bd->bd_info = bi;
op->o_callback = sc;
/* Check if it's a group. */
+ ldap_pvt_thread_mutex_lock( &agi->agi_mutex );
for ( ; agd ; agd = agd->agd_next ) {
if ( is_entry_objectclass_or_sub( op->ora_e, agd->agd_oc ) ) {
Modification mod;
modify_delete_values( op->ora_e, &mod, /* permissive */ 1, &text, textbuf, sizeof( textbuf ) );
aa->agd = agd;
+ /* But we should populate the dynamic values immediately. */
+ autogroup_add_group( op, agi, agd, op->ora_e, NULL, 1 , 0);
break;
}
}
+ ldap_pvt_thread_mutex_unlock( &agi->agi_mutex );
return SLAP_CB_CONTINUE;
}