]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/back-ldbm/entry.c
Set peeraddr also for IPv6, fixes ITS#1918
[openldap] / servers / slapd / back-ldbm / entry.c
index 08d6242136c15164a365402994dc33f8d1ba11f9..9e2cdc17f5e0b5d617d858276516862c332d3121 100644 (file)
@@ -1,7 +1,7 @@
 /* entry.c - ldbm backend entry_release routine */
 /* $OpenLDAP$ */
 /*
- * Copyright 1998-2000 The OpenLDAP Foundation, All Rights Reserved.
+ * Copyright 1998-2002 The OpenLDAP Foundation, All Rights Reserved.
  * COPYING RESTRICTIONS APPLY, see COPYRIGHT file
  */
 
@@ -28,8 +28,18 @@ ldbm_back_entry_release_rw(
 {
        struct ldbminfo *li = (struct ldbminfo *) be->be_private;
 
-       /* free entry and reader or writer lock */
-       cache_return_entry_rw( &li->li_cache, e, rw ); 
+       if ( slapMode == SLAP_SERVER_MODE ) {
+               /* free entry and reader or writer lock */
+               cache_return_entry_rw( &li->li_cache, e, rw ); 
+               if( rw ) {
+                       ldap_pvt_thread_rdwr_wunlock( &li->li_giant_rwlock );
+               } else {
+                       ldap_pvt_thread_rdwr_runlock( &li->li_giant_rwlock );
+               }
+
+       } else {
+               entry_free( e );
+       }
 
        return 0;
 }