Commits (2)
......@@ -56,6 +56,7 @@ typedef struct pp_info {
int hash_passwords; /* transparently hash cleartext pwds */
int forward_updates; /* use frontend for policy state updates */
int send_netscape_controls; /* send netscape password controls */
ldap_pvt_thread_mutex_t pwdFailureTime_mutex;
} pp_info;
/* Our per-connection info - note, it is not per-instance, it is
......@@ -999,11 +1000,13 @@ ppolicy_bind_response( Operation *op, SlapReply *rs )
goto locked;
}
ldap_pvt_thread_mutex_lock( &pi->pwdFailureTime_mutex );
op->o_bd->bd_info = (BackendInfo *)on->on_info;
rc = be_entry_get_rw( op, &op->o_req_ndn, NULL, NULL, 0, &e );
op->o_bd->bd_info = bi;
if ( rc != LDAP_SUCCESS ) {
ldap_pvt_thread_mutex_unlock( &pi->pwdFailureTime_mutex );
return SLAP_CB_CONTINUE;
}
......@@ -1327,6 +1330,7 @@ locked:
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;
}
......@@ -2419,6 +2423,7 @@ ppolicy_db_init(
)
{
slap_overinst *on = (slap_overinst *) be->bd_info;
pp_info *pi;
if ( SLAP_ISGLOBALOVERLAY( be ) ) {
/* do not allow slapo-ppolicy to be global by now (ITS#5858) */
......@@ -2463,7 +2468,7 @@ ppolicy_db_init(
}
}
on->on_bi.bi_private = ch_calloc( sizeof(pp_info), 1 );
pi = on->on_bi.bi_private = ch_calloc( sizeof(pp_info), 1 );
if ( !pwcons ) {
/* accommodate for c_conn_idx == -1 */
......@@ -2473,6 +2478,8 @@ ppolicy_db_init(
ov_count++;
ldap_pvt_thread_mutex_init( &pi->pwdFailureTime_mutex );
return 0;
}
......@@ -2508,6 +2515,7 @@ ppolicy_db_destroy(
pp_info *pi = on->on_bi.bi_private;
on->on_bi.bi_private = NULL;
ldap_pvt_thread_mutex_destroy( &pi->pwdFailureTime_mutex );
free( pi->def_policy.bv_val );
free( pi );
......