]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/overlays/pcache.c
trim listed modules
[openldap] / servers / slapd / overlays / pcache.c
index ec2d97910a95818a0683c4d5cba326c6c18639fe..56bf2a29b21bdf7d51abf6d18dca544022268a49 100644 (file)
@@ -1,7 +1,7 @@
 /* $OpenLDAP$ */
 /* This work is part of OpenLDAP Software <http://www.openldap.org/>.
  *
- * Copyright 2003-2006 The OpenLDAP Foundation.
+ * Copyright 2003-2007 The OpenLDAP Foundation.
  * Portions Copyright 2003 IBM Corporation.
  * Portions Copyright 2003 Symas Corporation.
  * All rights reserved.
@@ -216,7 +216,8 @@ merge_entry(
                        rc = 0;
                }
        } else {
-               be_entry_release_w( op, e );
+               if ( op->ora_e == e )
+                       be_entry_release_w( op, e );
                rc = 1;
        }
 
@@ -1925,7 +1926,7 @@ pc_cf_gen( ConfigArgs *c )
                        return( 1 );
                }
 
-               if ( !backend_db_init( c->argv[1], &cm->db )) {
+               if ( !backend_db_init( c->argv[1], &cm->db, -1 )) {
                        snprintf( c->msg, sizeof( c->msg ), "unknown backend type (arg #1)" );
                        Debug( LDAP_DEBUG_CONFIG, "%s: %s.\n", c->log, c->msg, 0 );
                        return( 1 );
@@ -2128,8 +2129,7 @@ pcache_db_config(
 
 static int
 pcache_db_init(
-       BackendDB *be
-)
+       BackendDB *be )
 {
        slap_overinst *on = (slap_overinst *)be->bd_info;
        cache_manager *cm;
@@ -2171,8 +2171,7 @@ pcache_db_init(
 
 static int
 pcache_db_open(
-       BackendDB *be
-)
+       BackendDB *be )
 {
        slap_overinst   *on = (slap_overinst *)be->bd_info;
        cache_manager   *cm = on->on_bi.bi_private;
@@ -2213,6 +2212,13 @@ pcache_db_open(
        cm->db.be_acl = be->be_acl;
        cm->db.be_dfltaccess = be->be_dfltaccess;
 
+       if ( SLAP_DBMONITORING( be ) ) {
+               SLAP_DBFLAGS( &cm->db ) |= SLAP_DBFLAG_MONITORING;
+
+       } else {
+               SLAP_DBFLAGS( &cm->db ) &= ~SLAP_DBFLAG_MONITORING;
+       }
+
        rc = backend_startup_one( &cm->db );
 
        /* There is no runqueue in TOOL mode */