mirror of
https://git.openldap.org/openldap/openldap.git
synced 2026-02-18 18:18:06 -05:00
ITS#5374
This commit is contained in:
parent
28b585b670
commit
aa73219c2e
2 changed files with 14 additions and 11 deletions
1
CHANGES
1
CHANGES
|
|
@ -4,6 +4,7 @@ OpenLDAP 2.3.41 Engineering
|
|||
Fixed slapd idlcache on adds (ITS#5086)
|
||||
Fixed slapd-bdb modrdn to same dn (ITS#5319)
|
||||
Fixed slapd-bdb crash with modrdn (ITS#5358)
|
||||
Fixed slapo-accesslog cleanup on successful response (ITS#5374)
|
||||
Fixed syncrepl propagation of errors (ITS#5282)
|
||||
|
||||
OpenLDAP 2.3.40 Release (2007/12/25)
|
||||
|
|
|
|||
|
|
@ -60,7 +60,6 @@ typedef struct log_info {
|
|||
Filter *li_oldf;
|
||||
Entry *li_old;
|
||||
int li_success;
|
||||
int li_unlock;
|
||||
ldap_pvt_thread_mutex_t li_op_mutex;
|
||||
ldap_pvt_thread_mutex_t li_log_mutex;
|
||||
} log_info;
|
||||
|
|
@ -911,10 +910,17 @@ static int accesslog_response(Operation *op, SlapReply *rs) {
|
|||
return SLAP_CB_CONTINUE;
|
||||
|
||||
if ( lo->mask & LOG_OP_WRITES ) {
|
||||
slap_callback *cb;
|
||||
ldap_pvt_thread_mutex_lock( &li->li_log_mutex );
|
||||
old = li->li_old;
|
||||
li->li_old = NULL;
|
||||
li->li_unlock = 0;
|
||||
/* Disarm mod_cleanup */
|
||||
for ( cb = op->o_callback->sc_next; cb; cb = cb->sc_next ) {
|
||||
if ( cb->sc_private == (void *)on ) {
|
||||
cb->sc_private = NULL;
|
||||
break;
|
||||
}
|
||||
}
|
||||
ldap_pvt_thread_mutex_unlock( &li->li_op_mutex );
|
||||
}
|
||||
|
||||
|
|
@ -1230,12 +1236,11 @@ accesslog_mod_cleanup( Operation *op, SlapReply *rs )
|
|||
{
|
||||
slap_callback *sc = op->o_callback;
|
||||
slap_overinst *on = sc->sc_private;
|
||||
log_info *li = on->on_bi.bi_private;
|
||||
op->o_callback = sc->sc_next;
|
||||
|
||||
op->o_tmpfree( sc, op->o_tmpmemctx );
|
||||
|
||||
if ( li->li_unlock ) {
|
||||
if ( on ) {
|
||||
BackendInfo *bi = op->o_bd->bd_info;
|
||||
op->o_bd->bd_info = (BackendInfo *)on;
|
||||
accesslog_response( op, rs );
|
||||
|
|
@ -1251,18 +1256,15 @@ accesslog_op_mod( Operation *op, SlapReply *rs )
|
|||
log_info *li = on->on_bi.bi_private;
|
||||
|
||||
if ( li->li_ops & LOG_OP_WRITES ) {
|
||||
slap_callback *cb = op->o_tmpalloc( sizeof( slap_callback ), op->o_tmpmemctx );
|
||||
slap_callback *cb = op->o_tmpalloc( sizeof( slap_callback ), op->o_tmpmemctx ), *cb2;
|
||||
cb->sc_cleanup = accesslog_mod_cleanup;
|
||||
cb->sc_response = NULL;
|
||||
cb->sc_private = on;
|
||||
cb->sc_next = op->o_callback;
|
||||
op->o_callback = cb;
|
||||
cb->sc_next = NULL;
|
||||
for ( cb2 = op->o_callback; cb2->sc_next; cb2 = cb2->sc_next );
|
||||
cb2->sc_next = cb;
|
||||
|
||||
/* FIXME: this needs to be a recursive mutex to allow
|
||||
* overlays like refint to keep working.
|
||||
*/
|
||||
ldap_pvt_thread_mutex_lock( &li->li_op_mutex );
|
||||
li->li_unlock = 1;
|
||||
if ( li->li_oldf && ( op->o_tag == LDAP_REQ_DELETE ||
|
||||
op->o_tag == LDAP_REQ_MODIFY )) {
|
||||
int rc;
|
||||
|
|
|
|||
Loading…
Reference in a new issue