#endif
rc = modify_replace_values( e, mod, text, textbuf, textlen );
- assert( rc != LDAP_TYPE_OR_VALUE_EXISTS );
if( rc != LDAP_SUCCESS ) {
#ifdef NEW_LOGGING
LDAP_LOG(( "backend", LDAP_LEVEL_INFO,
}
/* check for abandon */
- ldap_pvt_thread_mutex_lock( &op->o_abandonmutex );
- rc = op->o_abandon;
- ldap_pvt_thread_mutex_unlock( &op->o_abandonmutex );
- if ( rc ) {
+ if ( op->o_abandon ) {
rc = SLAPD_ABANDON;
goto exit;
}
Debug(LDAP_DEBUG_ARGS, "ldbm_back_modify:\n", 0, 0, 0);
#endif
+ /* grab giant lock for writing */
+ ldap_pvt_thread_rdwr_wlock(&li->li_giant_rwlock);
/* acquire and lock entry */
if ( (e = dn2entry_w( be, ndn, &matched )) == NULL ) {
NULL, dn, LDAP_SCOPE_DEFAULT );
}
+ ldap_pvt_thread_rdwr_wunlock(&li->li_giant_rwlock);
send_ldap_result( conn, op, LDAP_REFERRAL,
matched_dn, NULL, refs, NULL );
NULL, NULL, NULL, NULL );
cache_return_entry_w( &li->li_cache, e );
+ ldap_pvt_thread_rdwr_wunlock(&li->li_giant_rwlock);
return( 0 );
error_return:;
cache_return_entry_w( &li->li_cache, e );
+ ldap_pvt_thread_rdwr_wunlock(&li->li_giant_rwlock);
return( -1 );
}