-
- /*
- * no parent, acquire the root write lock
- * and release the add lock.
- */
- ldap_pvt_thread_mutex_lock(&li->li_root_mutex);
- rootlock = 1;
- ldap_pvt_thread_mutex_unlock(&li->li_add_mutex);
- }
-
- /* acquire required reader/writer lock */
- if (entry_rdwr_lock(e, 1)) {
- if( p != NULL) {
- /* free parent and writer lock */
- bdb2i_cache_return_entry_w( &li->li_cache, p );
- }
-
- if ( rootlock ) {
- /* release root lock */
- ldap_pvt_thread_mutex_unlock(&li->li_root_mutex);
- }
-
- Debug( LDAP_DEBUG_ANY, "add: could not lock entry\n",
- 0, 0, 0 );
-
- entry_free(e);
-
- send_ldap_result( conn, op, LDAP_OPERATIONS_ERROR, "", "" );
- return( -1 );