Commits (2)
......@@ -57,6 +57,7 @@ typedef struct pp_info {
int forward_updates; /* use frontend for policy state updates */
int disable_write;
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
......@@ -1418,11 +1419,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;
}
......@@ -1781,6 +1784,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;
}
......@@ -3115,6 +3119,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) */
......@@ -3126,7 +3131,7 @@ ppolicy_db_init(
return 1;
}
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 */
......@@ -3136,6 +3141,8 @@ ppolicy_db_init(
ov_count++;
ldap_pvt_thread_mutex_init( &pi->pwdFailureTime_mutex );
return 0;
}
......@@ -3177,6 +3184,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 );
......