]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/back-ldbm/add.c
Set peeraddr also for IPv6, fixes ITS#1918
[openldap] / servers / slapd / back-ldbm / add.c
index 9baac8106575f52ee31ab38f91161e8bc8120eed..876f8deae5110b04d8543894a00ce03268b67dcc 100644 (file)
@@ -126,7 +126,7 @@ ldbm_back_add(
                }
 
                if ( ! access_allowed( be, conn, op, p,
-                       children, NULL, ACL_WRITE ) )
+                       children, NULL, ACL_WRITE, NULL ) )
                {
                        /* free parent and writer lock */
                        cache_return_entry_w( &li->li_cache, p ); 
@@ -207,7 +207,7 @@ ldbm_back_add(
                                p = (Entry *)&slap_entry_root;
                                
                                rc = access_allowed( be, conn, op, p,
-                                       children, NULL, ACL_WRITE );
+                                       children, NULL, ACL_WRITE, NULL );
                                p = NULL;
                                
                                if ( ! rc ) {
@@ -375,12 +375,14 @@ return_results:;
        }
 
        if ( rc ) {
-               /* in case of error, writer lock is freed 
-                * and entry's private data is destroyed */
+               /*
+                * in case of error, writer lock is freed 
+                * and entry's private data is destroyed.
+                * otherwise, this is done when entry is released
+                */
                cache_return_entry_w( &li->li_cache, e );
+               ldap_pvt_thread_rdwr_wunlock(&li->li_giant_rwlock);
        }
 
-       ldap_pvt_thread_rdwr_wunlock(&li->li_giant_rwlock);
-
        return( rc );
 }