}
typedef struct ppbind {
- slap_overinst *on;
+ pp_info *pi;
+ BackendDB *be;
int send_ctrl;
int set_restrict;
LDAPControl **oldctrls;
ppolicy_bind_response( Operation *op, SlapReply *rs )
{
ppbind *ppb = op->o_callback->sc_private;
- slap_overinst *on = ppb->on;
- pp_info *pi = on->on_bi.bi_private;
+ pp_info *pi = ppb->pi;
Modifications *mod = ppb->mod, *m;
int pwExpired = 0;
int ngut = -1, warn = -1, fc = 0, age, rc;
char nowstr[ LDAP_LUTIL_GENTIME_BUFSIZE ];
char nowstr_usec[ LDAP_LUTIL_GENTIME_BUFSIZE+8 ];
struct berval timestamp, timestamp_usec;
- BackendInfo *bi = op->o_bd->bd_info;
+ BackendDB *be = op->o_bd;
LDAPControl *ctrl = NULL;
Entry *e;
goto locked;
}
- op->o_bd->bd_info = (BackendInfo *)on->on_info;
+ op->o_bd = ppb->be;
rc = be_entry_get_rw( op, &op->o_req_ndn, NULL, NULL, 0, &e );
- op->o_bd->bd_info = bi;
+ op->o_bd = be;
if ( rc != LDAP_SUCCESS ) {
ldap_pvt_thread_mutex_unlock( &pi->pwdFailureTime_mutex );
}
done:
- op->o_bd->bd_info = (BackendInfo *)on->on_info;
+ op->o_bd = ppb->be;
be_entry_release_r( op, e );
+ op->o_bd = be;
locked:
if ( mod && !pi->disable_write ) {
op2.orm_no_opattrs = 1;
op2.o_dont_replicate = 1;
}
- op2.o_bd->bd_info = (BackendInfo *)on->on_info;
+ op2.o_bd = ppb->be;
}
rc = op2.o_bd->be_modify( &op2, &r2 );
if ( rc != LDAP_SUCCESS ) {
ppb->oldctrls = add_passcontrol( op, rs, ctrl );
op->o_callback->sc_cleanup = ppolicy_ctrls_cleanup;
}
- op->o_bd->bd_info = bi;
ldap_pvt_thread_mutex_unlock( &pi->pwdFailureTime_mutex );
return SLAP_CB_CONTINUE;
}
cb = op->o_tmpcalloc( sizeof(ppbind)+sizeof(slap_callback),
1, op->o_tmpmemctx );
ppb = (ppbind *)(cb+1);
- ppb->on = on;
+ ppb->pi = on->on_bi.bi_private;
+ ppb->be = op->o_bd->bd_self;
ppb->pErr = PP_noError;
ppb->set_restrict = 1;
cb = op->o_tmpcalloc( sizeof(ppbind)+sizeof(slap_callback),
1, op->o_tmpmemctx );
ppb = (ppbind *)(cb+1);
- ppb->on = on;
+ ppb->pi = on->on_bi.bi_private;
+ ppb->be = op->o_bd->bd_self;
ppb->pErr = PP_noError;
ppb->send_ctrl = 1;
/* failures here don't lockout the connection */