summaryrefslogtreecommitdiffstats
path: root/ldap/servers/slapd/back-ldbm/cleanup.c
diff options
context:
space:
mode:
Diffstat (limited to 'ldap/servers/slapd/back-ldbm/cleanup.c')
-rw-r--r--ldap/servers/slapd/back-ldbm/cleanup.c51
1 files changed, 51 insertions, 0 deletions
diff --git a/ldap/servers/slapd/back-ldbm/cleanup.c b/ldap/servers/slapd/back-ldbm/cleanup.c
new file mode 100644
index 00000000..ef539134
--- /dev/null
+++ b/ldap/servers/slapd/back-ldbm/cleanup.c
@@ -0,0 +1,51 @@
+/** BEGIN COPYRIGHT BLOCK
+ * Copyright 2001 Sun Microsystems, Inc.
+ * Portions copyright 1999, 2001-2003 Netscape Communications Corporation.
+ * All rights reserved.
+ * END COPYRIGHT BLOCK **/
+/* cleanup.c - cleans up ldbm backend */
+
+#include "back-ldbm.h"
+
+int ldbm_back_cleanup( Slapi_PBlock *pb )
+{
+ struct ldbminfo *li;
+ Slapi_Backend *be;
+
+ LDAPDebug( LDAP_DEBUG_TRACE, "ldbm backend cleaning up\n", 0, 0, 0 );
+ slapi_pblock_get( pb, SLAPI_PLUGIN_PRIVATE, &li );
+ slapi_pblock_get( pb, SLAPI_BACKEND, &be );
+
+ if (be->be_state != BE_STATE_STOPPED &&
+ be->be_state != BE_STATE_DELETED)
+ {
+ LDAPDebug( LDAP_DEBUG_TRACE,
+ "ldbm_back_cleanup: warning - backend is in a wrong state - %d\n",
+ be->be_state, 0, 0 );
+ return 0;
+ }
+
+ PR_Lock (be->be_state_lock);
+
+ if (be->be_state != BE_STATE_STOPPED &&
+ be->be_state != BE_STATE_DELETED)
+ {
+ LDAPDebug( LDAP_DEBUG_TRACE,
+ "ldbm_back_cleanup: warning - backend is in a wrong state - %d\n",
+ be->be_state, 0, 0 );
+ PR_Unlock (be->be_state_lock);
+ return 0;
+ }
+
+ dblayer_terminate( li );
+
+/* JCM I tried adding this to tidy up memory on shutdown. */
+/* JCM But, the result was very messy. */
+/* JCM objset_delete(&li->li_instance_set); */
+
+ be->be_state = BE_STATE_CLEANED;
+
+ PR_Unlock (be->be_state_lock);
+
+ return 0;
+}