From 4f72b1a1a3d89c8e1ebac3e9adc14defae8f0cfe Mon Sep 17 00:00:00 2001
From: Quanah Gibson-Mount <quanah@openldap.org>
Date: Wed, 22 Jul 2009 22:28:46 +0000
Subject: [PATCH] ITS#6214

---
 CHANGES                    | 1 +
 servers/slapd/slapacl.c    | 4 +++-
 servers/slapd/slapauth.c   | 4 +++-
 servers/slapd/slapschema.c | 4 +++-
 4 files changed, 10 insertions(+), 3 deletions(-)

diff --git a/CHANGES b/CHANGES
index 07ab26c9e0..d87d846c48 100644
--- a/CHANGES
+++ b/CHANGES
@@ -3,6 +3,7 @@ OpenLDAP 2.4 Change Log
 OpenLDAP 2.4.18 Engineering
 	Fixed slapd incorrectly applying writetimeout when not set (ITS#6220)
 	Fixed slapd subordinate needs a suffix (ITS#6216)
+	Fixed slapd tools to properly close database (ITS#6214)
 	Fixed slapd-ndb startup (ITS#6203)
 	Build Environment
 		Fixed test056-monitor with custom ports (ITS#6213)
diff --git a/servers/slapd/slapacl.c b/servers/slapd/slapacl.c
index cc49b21525..c02d5db3b1 100644
--- a/servers/slapd/slapacl.c
+++ b/servers/slapd/slapacl.c
@@ -73,6 +73,7 @@ slapacl( int argc, char **argv )
 	char			*attr = NULL;
 	int			doclose = 0;
 	BackendDB		*bd;
+	void			*thrctx;
 
 	slap_tool_init( progname, SLAPACL, argc, argv );
 
@@ -96,7 +97,8 @@ slapacl( int argc, char **argv )
 	argv = &argv[ optind ];
 	argc -= optind;
 
-	connection_fake_init( &conn, &opbuf, &conn );
+	thrctx = ldap_pvt_thread_pool_context();
+	connection_fake_init( &conn, &opbuf, thrctx );
 	op = &opbuf.ob_op;
 	op->o_tmpmemctx = NULL;
 
diff --git a/servers/slapd/slapauth.c b/servers/slapd/slapauth.c
index e6a1b8916f..9b82e7db70 100644
--- a/servers/slapd/slapauth.c
+++ b/servers/slapd/slapauth.c
@@ -83,13 +83,15 @@ slapauth( int argc, char **argv )
 	Connection		conn = {0};
 	OperationBuffer	opbuf;
 	Operation		*op;
+	void			*thrctx;
 
 	slap_tool_init( progname, SLAPAUTH, argc, argv );
 
 	argv = &argv[ optind ];
 	argc -= optind;
 
-	connection_fake_init( &conn, &opbuf, &conn );
+	thrctx = ldap_pvt_thread_pool_context();
+	connection_fake_init( &conn, &opbuf, thrctx );
 	op = &opbuf.ob_op;
 
 	conn.c_sasl_bind_mech = mech;
diff --git a/servers/slapd/slapschema.c b/servers/slapd/slapschema.c
index 6a00be85c7..c3b7aaed88 100644
--- a/servers/slapd/slapschema.c
+++ b/servers/slapd/slapschema.c
@@ -49,6 +49,7 @@ slapschema( int argc, char **argv )
 	Connection conn = { 0 };
 	OperationBuffer	opbuf;
 	Operation *op = NULL;
+	void *thrctx;
 
 	slap_tool_init( progname, SLAPCAT, argc, argv );
 
@@ -78,7 +79,8 @@ slapschema( int argc, char **argv )
 		exit( EXIT_FAILURE );
 	}
 
-	connection_fake_init( &conn, &opbuf, &conn );
+	thrctx = ldap_pvt_thread_pool_context();
+	connection_fake_init( &conn, &opbuf, thrctx );
 	op = &opbuf.ob_op;
 	op->o_tmpmemctx = NULL;
 	op->o_bd = be;
-- 
GitLab